﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Lintalist - Text Expander, Snippet manager, supporting searchable interactive texts to copy &amp; paste text, run scripts, using easily exchangeable bundles</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="SHORTCUT ICON" href="favicon.ico" />
<link href="style.css" rel="stylesheet" type="text/css" media="screen" />
<meta name="description" content="Lintalist manages searchable interactive texts to copy &amp; paste text, run scripts, using easily exchangeable bundles - text-expander with hotkeys, full text search, plugins and scripts, gestionnaire des extraits de texte" />
<meta name="keywords" content="bundle, bundles, snippet, snippets, paste text, textpow, clipboard, searchable, search, autotext, auto-replace, template, clipboard, phrases, text, text substitution, text expander, text replacement, expand abbreviations, typing utility, trigger hotstrings, open source gestionnaire des extraits de texte" />
</head>
<body id='top'>
<div id='container'>
<div id='intro'>
<p style='color:#000;font-family:georgia;font-size:14px;line-height:150%;text-shadow: #fff 1px 1px 0px;' align='justify'>
<span style='float:right;margin:0;padding:0;margin-top:10px;margin-right:100px;font-size:10px;color:#000;text-shadow: #eee 1px 1px 0px;'><a href='https://autohotkey.com/' style='color:#000;'><img src='img/poweredbyahk.png' alt='' border='0' style='padding-top:4px;' /></a></span>
<img src='img/lintalist.png' alt='Lintalist' title='Lintalist' border='0' style='margin-left:-20px;padding-bottom:40px;' /><br clear='all' />
<b>Lintalist</b> allows you to store and (incrementally) <b>search</b> and <b>edit texts</b> in bundles and <b>paste</b> a selected text in your active program. The text <b>can</b> be interactive, for example you can automatically insert the current time and date, ask for (basic) user input or make a selection from a list etc and finally it can also <b>run a script</b>. You can use <b>keyboard shortcuts</b> or <b>abbreviations</b> to paste the text (or run the script) without opening the search window.<br /><br />Formatted text (html, markdown, rtf and images) is supported in Snippets, and Lintalist can be <b>extended</b> by writing your own <b><a href='#InteractiveBundleText'>plugins</a></b>.
<br /><br />
<span style='font-size:.8em;'><b>Lintalist</b> is <b>open source</b> and developed in <a href='https://autohotkey.com/'>AutoHotkey</a>, an easy to learn scripting language for Windows.
[WinXP(sp3)/Vista/7/8/10]<br /></span>
<span class='date' style='float:right;display:inline;margin-top:0px;'>doc rev. 20230722</span></p>
</div>

<div class='column'>
<p><b>Program</b></p>
<ul>
<li><a href='#Introduction'>Introduction</a></li>
<li><a href='#Installing'>Installing Lintalist</a></li>
<li><a href='#Searching'>Start searching</a>
  <ul>
    <li><a href='#Omni'>OmniSearch</a></li>
    <li><a href='#ColumnSearch'>ColumnSearch</a></li>
  </ul>
</li>
<li><a href='#Shortcuts'>Using Shortcuts</a> (Hotkeys)</li>
<li><a href='#Shorthand'>Using Shorthand</a> (Abbrev.)</li>
<li><a href='#KeyboardShortcuts'>Lintalist Keyboard Shortcuts</a></li>
<li><a href='#TrayMenu'>Tray Menu</a></li>
<li><a href='#Configuration'>Configuration</a><ul>
<li><a href='#Configuration-MultiCaret'>MultiCaret</a></li>
<li><a href='#Configuration-AltPaste'>AltPaste</a></li>
<li><a href='#Configuration-Linefeed'>Linefeed</a></li>
<li><a href='#Configuration-AfterPaste'>AfterPaste</a></li>
</ul></li>
<li><a href='#cmdline'>Command line parameters</a></li>
<li><a href='#FAQ'>FAQ &amp; Known Issues</a></li>
<li><a href='#Expert'>Expert</a></li>
<li><a href='#Linux'>Linux</a></li>
<li><a href='#History'>History</a> (changelog)</li>
</ul>

<p><br />Lintalist <b>Bundles</b>:<br />
<a href='https://github.com/lintalist/lintalist-bundles/'>github.com/lintalist/lintalist-bundles/</a></p>

<p><b>Videos:</b><br />
<a href="http://youtu.be/XfjZPAhHB8c">General</a>; 
<a href="http://youtu.be/Q6SFkttjUQk">HTML/MD</a>; 
<a href="http://youtu.be/J1StUarGHmI">Formatted</a>; and
<a href="http://youtu.be/Rtd_ChyRVkM">Plugins</a></p>

</div>

<div class='column'>
<p><b>Bundles</b></p>
<ul>
<li><a href='#LintalistBundles'>Lintalist Bundles Introduction</a></li>
<li><a href='#SnippetsBundles'>Snippets &amp; Bundles</a><ul>
<li><a href='#InteractiveBundleText'>plugins</a> (how to)</li>
<li><a href='#Script'>scripts</a></li>
<li><a href='#Functions'>functions</a></li>
</ul></li>
<li><a href='#FormattedText'>Formatted Text Snippets</a></li>
<li><a href='#Editing'>Editing Bundles and Snippets</a></li>
<li><a href='#ManagingBundles'>Managing Bundles</a></li>
<li><a href='#LoadAllBundles'>Load All Bundles</a> (via tray)</li>
<li><a href='#ReloadBundles'>Reload Bundles</a> (via tray)</li>
</ul>
<br />
<p><b>Feedback</b></p>

<ul>
<li><a href='https://github.com/lintalist/lintalist/issues'>Issues at GH</a> (preferred)</li>
<li><a href='https://autohotkey.com/boards/viewtopic.php?f=6&t=3378'>autohotkey.com forum</a> (Guest posting allowed)</li>
<li><a href='http://www.portablefreeware.com/index.php?id=2686'>Portablefreeware.com</a></li>
<li><a href='http://www.donationcoder.com/forum/index.php?topic=41475.0'>Donationcoder.com</a></li>
<li><a href='http://alternativeto.net/software/lintalist/'>AlternativeTo</a></li>
</ul>

</div>

<div class='column'>
<p><b>Download Lintalist <em>1.9.22</em></b>
<p>
<a href='https://github.com/lintalist/lintalist/releases'><img src='img/lintalist65x65.gif' alt='Download Lintalist' width='65' align='left' border='0' style='margin-right: 5px;' /></a>
Download (incl. source):<br />
<a href='https://github.com/lintalist/lintalist/releases'><b>Latest release</b></a> (920 kb)<br />Simply unpack and run lintalist.ahk or lintalist.exe<br />
</p>

<span class='tip' style="margin-bottom:10px;"><img src="img/usb.png" width=50 align=right title="USB image by Alessandro Rei (GNU/GPL) - http://findicons.com/icon/255067/usb?id=256158">Lintalist is a <b>portable application</b>. It stores all settings and bundles in the folder the program resides in. <a href="#portable">More...</a>
</span>

<p><b>Lintalist</b> Source code:<br />
<a href='https://github.com/lintalist/lintalist/'>github.com/lintalist/lintalist</a></p>

<p><b>Reviews</b></p>
<ul>
<li><a href='https://www.softpedia.com/get/Office-tools/Other-Office-Tools/Lintalist.shtml'>Softpedia.com</a> (en) &#x2197;</li>
<li><a href='https://www.majorgeeks.com/files/details/lintalist.html'>MajorGeeks.com</a> (en) &#x2197;</li>
<li><a href='https://www.ghacks.net/2020/02/21/lintalist-is-an-open-source-snippet-manager-for-windows/'>Ghacks.com</a> (en) &#x2197;</li>
<li><a href='https://www.freewarefiles.com/Lintalist_program_109453.html'>Freewarefiles.com</a> (en) &#x2197;</li>
<li><a href='https://www.filecroco.com/download-lintalist/'>filecroco.com</a> (en) &#x2197;</li>
<li><a href='http://www.ilovefreesoftware.com/25/windows/free-text-expander-tool-enter-snippets-according-to-active-program.html'>ilovefreesoftware.com</a> (en) &#x2197;</li>
<li><a href='https://itigic.com/lintalist-an-alternative-to-the-windows-clipboard/'>itigic.com</a> (en) &#x2197; (<a href='https://itigic.com/pt/lintalist-an-alternative-to-the-windows-clipboard/'>pt</a>) &#x2197;</li>
<li><a href='https://www.libellules.ch/dotclear/index.php?post/2018/10/31/Lintalist-gestionnaire-des-extraits-de-texte'>libellules.ch</a> (fr) &#x2197;</li>
<li><a href='http://www.bchari.com/2019/03/lintalist.html'>bchari.com</a> (jp) &#x2197;</li>
<li><a href='https://computertotaal.nl/artikelen/apps-software/dit-zijn-de-beste-freeware-tips-van-februari-2020/#rs-1582032317595'>computertotaal.nl</a> (nl) &#x2197;</li>
<li><a href='https://videotanfolyam.hu/blog/2081/Lintalist_gyorsabb_es_kevesebb_gepeles_elore_megirt_szovegek_hasznalataval'>videotanfolyam.hu</a> (hu) &#x2197;</li>
<!--
<li><a href=''></a>  (en) &#x2197;</li>
--></ul>
</div>

<div class='brk'></div>

<pre id='content'>
<h2 id='Introduction'><a href='#Introduction' class='headline'>Introduction</a></h2>

As noted above Lintalist allows you to store and (incrementally) <b>search</b> and <b>edit texts</b> in bundles and <b>paste</b> a selected text in your active program.

The texts, shortcuts, abbreviations and scripts are called <b>snippets</b> and they are stored in a so called <b>bundle</b>. A bundle is a simple text file, making it easy to understand, maintain and exchange bundles between users.

The bundles are <b>context sensitive</b>: based on the <b>(partial) window title</b> of the currently active program it will try to load one or more matching bundles, this will allow you to use the same shortcuts and shorthands in different applications and files making it even more flexible. You don't have to use or remember any shortcuts or shorthands because you can <b>search your bundles</b> at any time by opening the search window. Think of it as text-expander which will save you countless keystrokes and has a number of additional features: hotkeys, full text search, plugins and scripts.
Some might compare it to the "tag list" or "clip libraries" you might find in many text editors.

<span class='tip'>Bundles and Snippets can be edited using the <a href='#Editing'>Lintalist Bundle &amp; Snippet Editors</a> OR in your preferred text editor.</span>

For example: If you are editing a HTML file, Lintalist could use both a HTML and CSS bundle, but if you are editing a CSS file only the CSS Bundle is loaded. So, in your HTML file the shortcut <strong>ctrl+b</strong> can insert <strong>&lt;strong&gt;&lt;/strong&gt;</strong> at the caret position (or wrap the tag around the selected text) and while editing your CSS file the shortcut <strong>ctrl+b</strong> can insert <strong>font-style: bold;</strong> at the caret position. If a shortcut is found in multiple active bundles a pop-up-menu will appear so you can choose which snippet & bundle you prefer.

<b>Note:</b> although Lintalist can expand abbreviations it is not intended to replicate or replace the native AutoHotkey Hotstrings features, see <a href='https://autohotkey.com/docs/Hotstrings.htm'>autohotkey.com/docs/Hotstrings.htm</a> for an introduction and description of all the options.

<span class='tip'>If you find this inconvenient, edit one of the snippets and change the shortcut or shorthand.</span>
This program is written in AutoHotkey, a free, open-source (scripting) utility for Windows. Learn more at <a href='https://autohotkey.com/'>autohotkey.com</a>.
<!--
<div class='column' style='float:right;'>
<h3 id='Usage'><em>Useful for...</em></h2>
- (Canned) email responses in a support environment
</div>
-->
<span class='tip' id='portable' style='width:250px;float:right;margin:10px;margin-top:40px;border-top:3px dashed #FCDC3B;border-bottom:3px dashed #FCDC3B;background-color:#FFF8DC;' ><img src="img/usb.png" width=50 align=right title="USB image by Alessandro Rei (GNU/GPL) - http://findicons.com/icon/255067/usb?id=256158">Lintalist is a <b>portable application</b>. It stores all settings and bundles in the folder the program resides in. 

When you run it for the very first time it does ask if you want a shortcut on your desktop or would like to automatically start it with Windows but you don't have to do that. You can run the program from a USB drive or dropbox account for example.

If you want to take your copy of Lintalist with you all you have to do is copy the Lintalist folder. Same goes for making a backup.
</span>
<h3 id='FeatureList'><a href='#FeatureList' class='headline'>Full Feature List:</a></h3>

- Full text snippet search using four different search modes
- Context sensitive bundles
- Abbreviations for your favourite snippets (Hotstrings in AutoHotkey terminology)
- Shortcuts for your favourite snippets (Hotkeys in AutoHotkey terminology)
- Run (AutoHotkey-)scripts
- Local variables (user specific)
- Bundle converters (simple lists, CSV, UltraEdit, Texter)
- Portable application
- Plugins are easy to develop, included by default are:
  - return caret to position in text
  - insert date & time incl. dates and time math
  - calendar
  - user input
  - select item from a list
  - use clipboard
  - use selected text
  - counters (can be created on the fly)
  - chain snippets (insert the text of one snippet into another)
  - insert text from file
  - math (calc)
  - random selection
  - split and reuse text
  - formatted text and images using HTML, Markdown, RTF and Image

<h2 id='Installing'><a href='#Installing' class='headline'>Installing <em>Lintalist</em></a></h2>

Installing Lintalist is easy, just download the ZIP file and unpack it in a folder of your preference. Make sure you have write permissions for the destination folder (i.e. don't unpack into a folder like "C:\Program Files"). It is probably easiest to work with if you place it in your "My Documents" folder as this will make it easier for Lintalist to update your bundles while you are using them. Lintalist is fully portable and doesn't write any settings to the registry, so you can run it directly from a USB flash drive or DropBox folder for example.

If you are already an AutoHotkey user and have it installed, it is recommended to run <b>Lintalist.ahk</b>, this will ensure you will be running Lintalist with your preferred version of AutoHotkey. If you don't have AutoHotkey installed you can start <b>Lintalist.exe</b>.

<b>Notes:</b>
- Lintalist.exe: A renamed AutoHotkey.exe (v1.1.37.01 32/64-bit Unicode, See https://autohotkey.com/ and/or https://autohotkey.com/download/)
- Lintalist.ahk: The actual (main) source code of the program (see https://github.com/lintalist/lintalist)

<h2 id='Searching'><a href='#Searching' class='headline'>Normal use: Starting Lintalist and searching for a Snippet</a></h2>

If Lintalist is running you can activate the search window by pressing <kbd>CAPSLOCK</kbd>, the default hotkey. You can change this hotkey via the configuration menu accessible via the tray menu by right clicking on the Lintalist icon <img src="img/lintalist65x65.gif" width="14" height="14" border="0" alt="lintalist icon" style="vertical-align:middle" >).

Based on the active program title, one or more bundles will be loaded into the search window so you can start searching:

<span class='small'>Lintalist search window:</span>
<img src='img/lintalist-search.png' alt='Lintalist search window, xhtml bundle loaded' style='max-width:100%;' />
<span class='small'>1: Type query.
2: Menu + search options.
3: Result list with Part 1, Part 2, Key(board shortcut), Short(hand, abbreviation). Columns are dynamic, if part 2, key or short are not present in the loaded bundle(s) they will not be displayed.
4: Preview of top most or selected snippet text. In statusbar: loaded bundle(s) and hits / number of snippets.</span>

<span class='tip'>If you press the same hotkey again while the Lintalist Search window is active it will toggle between the Wide &amp; Narrow view. You can set the width and height of both views via the configuration menu.</span>

While you type, the number of results will decrease (called incremental search or quick filter). A small icon indicates if it is purely a text snippet <img src='img/texticon.gif' alt='Lintalist text snippet' style='display:inline;margin-bottom:-3px;' /> or if it actually will run a script <img src='img/scripticon.gif' alt='Lintalist script snippet' style='display:inline;margin-bottom:-2px;' />.  You can turn the icons on and off via the configuration menu (<span class='setting'>ShowIcons</span> setting), you can also influence the order of the results by setting various sorting options (see <span class='setting'>SortByUsage</span> and <span class='setting'>ColumnSort</span> settings).

After pressing <kbd>ENTER</kbd> on a selected entry from the results list, by default the text (Part1) is pasted in the active program (note the explanation above). <kbd>SHIFT</kbd>+<kbd>ENTER</kbd> and <kbd>ENTER</kbd> will use the first item in the results list unless you have selected another item with the arrow keys. Depending on the snippet either a text is pasted OR a script is run (note explanation above).
[v1.9.7+] If you just want to copy the snippet to the clipboard and not paste it press <kbd>Alt</kbd>+<kbd>ENTER</kbd> for Part 1 and <kbd>Alt</kbd>+<kbd>Shift</kbd>+<kbd>ENTER</kbd> for Part 2.

You can also use the <kbd>Up</kbd> and <kbd>Down</kbd> <!--, <kbd>Page Up</kbd> and <kbd>Page Down</kbd> -->keys to navigate through the list. You can select a different bundle or load all bundles via the Bundle menu. If you choose a bundle from the bundle menu (<kbd>Alt</kbd>+<kbd>b</kbd>), that bundle will be <b style='color:#c00;'>locked</b> (toolbar icon: <img src='img/locked.ico' width='18' height='18' alt='locked icon' style="vertical-align:middle" />) and always remain active until you unlock it (<kbd>Alt</kbd>+<kbd>l</kbd>, letter l).
If enabled you can use <kbd>Alt</kbd>+<kbd>1..0</kbd> for the first ten search results. [v1.9.9]+

<span class='tip'>What happens when you (double) click on an entry in the list is determined by a setting in the configuration menu. (<span class='setting'>SingleClickSends</span> and <span class='setting'>DoubleClickSends</span> setting)</span>

<b id='default-bundle'><a href='#SearchOptions' class='headline'>Default bundle</a></b>: there is also a default bundle which is always loaded - unless you lock a specific bundle - that way you always have your generic snippets available in every program. 

<span class='tip'>If you have no need for context sensitive bundles, simply make use of the default bundle and put in all your snippets. In such a case you could also lock the default bundle although there should be no need to do so.</span>

<h3 id='SearchOptions'><a href='#SearchOptions' class='headline'>Search options:</a></h3>

You can search for text in your bundles using four different methods:

<table>
<thead>
<tr>
	<th>Method</th>
	<th>Description</th>
</tr>
</thead>

<tr><td><b><span style='text-decoration:underline;'>R</span>glr</b></td><td><kbd>Alt</kbd>+<kbd>r</kbd> is Regular or Normal search: the text you type must be found literally
  Example:
  Typing 'searching text' will find '<b style='color:#c00;'>searching text</b>' but NOT 'searching for text'</td></tr>

<tr><td><b>F<span style='text-decoration:underline;'>z</span>zy</b></td><td><kbd>Alt</kbd>+<kbd>z</kbd> is Fuzzy search: the text you type can be found anywhere making it more
  flexible to narrow down the results.
  Example:
  Typing 'sea tex' will find '<b style='color:#c00;'>sea</b>rching <b style='color:#c00;'>tex</b>t' but ALSO '<b style='color:#c00;'>sea</b>rching for <b style='color:#c00;'>tex</b>t' or '<b style='color:#c00;'>tex</b>t about the <b style='color:#c00;'>sea</b>'</td></tr>
  
<tr><td><b>RgE<span style='text-decoration:underline;'>x</span></b></td><td><kbd>Alt</kbd>+<kbd>x</kbd> is Regular Expression search (Perl-compatible, PCRE) so you can search for patterns
  Example: se\w*g will find '<b style='color:#c00;'>searching</b>' '<b style='color:#c00;'>sewing</b>' etc.
  See <a href='https://autohotkey.com/docs/commands/RegExMatch.htm'>autohotkey.com/docs/commands/RegExMatch.htm</a> for more information
  about using Regular expression for searching [see notes about RgEx search below
  for some background info as not ALL Regular Expressions may produce the expected
  results]</td></tr>
<tr><td><b><span style='text-decoration:underline;'>M</span>agc</b></td><td><kbd>Alt</kbd>+<kbd>m</kbd> is Magic search (QuickSilver like search - experimental)
  Example:
  Typing 'sax' will find '<b style='color:#c00;'>s</b>e<b style='color:#c00;'>a</b>rching te<b style='color:#c00;'>x</b>t'</td></tr>

</tbody>
</table>

<b id='case-sensitive'><a href='#case-sensitive' class='headline'>Case (in)sensitive search</a></b>
  
Use Case <kbd>Alt</kbd>+<kbd>c</kbd> to make your searches case sensitive.

In the area below the search results you will see the preview window of the currently active item in the bundle (Part1 by default but this can be changed via the configuration menu and settings.ini).

The statusbar shows which bundles are loaded and how many items were found out of the total items.

You can control the maximum number of search results and the maximum number of snippets that you can see in the results list.

<h3 id='SearchSnippets'><a href='#SearchSnippets' class='headline'>Which sections of the snippets are searched?</a></h3>

It will search for a match in <b>Part1</b>, <b>Part2</b> and <b>Shorthand</b> (so not in the Shortcut and not in the Script code). Note that in order to show a more legible text in the results list, Part1 and Part2 are shown differently if they are multi-line texts:

A new line is replaced by <b>\n</b> and a tab by <b>\t</b> and it will search <b>these texts</b> and not the original multi-line (but the original ones will be used when the texts are pasted, once you see it in action couple of times you will get used to it pretty quickly)

<h3 id='RegExCase'><a href='#RegExCase' class='headline'>RegEx &amp; Case sensitive search</a></h3>

<span style='color:#c00;'>&lt;techtalk&gt;</span> If the <b>Case check-box</b> is not checked your searches will be case-insensitive. When using the RegEx search method the "i)" option for the regular expression will automatically be inserted before each snippet is searched. This may lead to unexpected results if you pass on other options for your RegEx search. 

Example: The case-insensitive RegEx 'se\w*g' it is actually using the following regular expression 'i)se\w*g' while searching. This is done for convenience (otherwise you would have to type i) every time you wanted to do a case-insensitive search (RegEx is by default case sensitive). If you want to pass on extra options it is best to turn Case sensitive ON and add the options you need as described here <a href='https://autohotkey.com/docs/commands/RegExMatch.htm#Options'>autohotkey.com/docs/commands/RegExMatch.htm#Options</a>. This behaviour may change in future version of Lintalist. <span style='color:#c00;'>&lt;/techtalk&gt;</span>

<b id='searchlv'><a href='#searchlv' class='headline'>Search letter variations [v1.7+]</a></b>

Sometimes accented letters are part of the text you are searching for. These can be difficult or slow to type. By adding the variations of these letters to the search string you can search for 'cafe' but still find 'caf&eacute;'. So the 'e' in the query will be translated to searching for 'e&#xE9;&#xE8;&#xEA;&#x1E19;&#x11B;&#x115;&#x1EBD;&#x1E1B;&#x1EBB;&#x117;&#xEB;&#x113;&#x229;&#x119;&#x1D92;&#x247;&#x205;&#x1EBF;&#x1EC1;&#x1EC5;&#x1EC3;&#x1E1D;&#x1E17;&#x1E15;&#x207;&#x1EB9;&#x1EC7;&#xE6;&#x1FD;&#x1E3;&#x153;&#x1D6B;'.
When active all search modes will use a Regular Expression (Regular and Fuzzy)
(De)Activate the setting via the <i>L<u>v</u></i> button in the Search GUI (<kbd>Alt</kbd>+<kbd>v</kbd>) or the <span class='setting'>SearchLetterVariations</span> setting in the Configuration menu.
More information in the comments of 'include\LetterVariations.ahk'

<h3 id='Omni'><a href='#Omni' class='headline'><em>Omni</em>Search (search all bundles)</a></h3>

By default you are only searching in the loaded bundles, you can however search in all bundles using the following methods:

<b>1. Load All Bundles</b>

You can Load all bundles:

- use the tray many, select Load all bundles and bring up the search GUI; or
- bring up the search GUI, bundle menu, first option: Load all bundles

This has the disadvantage that it also sets the Locked state so next time you bring up the search GUI you are searching in all bundles again and you have to unlock it.

<b>2. Omnisearch query</b>

When you start your query with a predefined character (<b style='color:#c00;'>@</b> by default) Lintalist will search in all bundles independent of the ones that are currently loaded or locked in the search Gui. You can define this character in the settings (OmniChar). If you don't want to use Omnisearch while typing a query simply disable it by erasing the OmniChar in the settings menu.

Query: state -> will find "state" in the currently loaded bundle(s)
Query: <b style='color:#c00;'>@</b>state -> will find "state" in all bundles

<b>3. Omnisearch shortcuts</b>

- While search GUI is active: press <kbd>F2</kbd> to toggle the Omnisearch.
- If you press <kbd>Ctrl</kbd>+<kbd>Capslock</kbd> the search GUI is opened in Omnisearch mode (tip: use <kbd>F2</kbd> to toggle). You can define the hotkey in the settings - <span class='setting'>StartOmniSearchHotkey</span>

Note: while using option 2 &amp; 3 the text "(All)" will be added to the statusbar (bottom right) to indicate you are using Omnisearch when the results are updated.

<h3 id='ColumnSearch'><a href='#ColumnSearch' class='headline'><em>Column</em>Search (search specific part of a snippet)</a></h3>

By default Lintalist tries to find matches in <em>part1, part2</em>, and <em>shorthand</em> of a snippet <a href='#SearchSnippets'>while searching</a>.

When you start your query with a number (1 to 5), followed by a predefined character (<b style='color:#c00;'></b>&lt;</b> by default, <span class='setting'>ColumnSearchDelimiter</span> in the settings) Lintalist will search in a specific part of a snippet. To disable this feature erase the <span class='setting'>ColumnSearchDelimiter</span> in the settings.

Query: state -> will find "state" in part1, part2, and shorthand of a snippet
Query: 1<b style='color:#c00;'>&lt;</b>state -> will find "state" <b>only</b> if it is found in <b>part1</b> of a snippet

1 to 5 refers to the <a href="#SnippetsBundles">"part" or "section"</a> of a snippet:

1&lt; Part1
2&lt; Part2
3&lt; Shortcut (key)
4&lt; Shorthand (abbreviation)
5&lt; Script

Start the query with the OmniSearch character to combine it with ColumnSearch (e.g. <b style='color:#c00;'>@</b>1<b style='color:#c00;'>&lt;</b>state)

<h3 id='lockedbundles'><a href='#lockedbundles' class='headline'><em>Locked</em> bundle(s), TitleMatch</a></h3>

By default bundles use the TitleMatch property to determine which snippets to use. In order to always use a specific (set of) bundles:

1. Use All Bundles all of the time - see <a href='#LoadAllBundles'>Load All Bundles</a>
2. Load a specific bundle from the Bundle menu.
3. Use the <b style='color:#c00;'>lock</b> toolbar icon: <img src='img/locked.ico' width='18' height='18' alt='locked icon' style="vertical-align:middle" />, or shortcut <kbd>Alt</kbd>+<kbd>l</kbd>

See also <a href='#faq5'>FAQ 5</a>.

<h2 id='Shortcuts'><a href='#Shortcuts' class='headline'>Using <em>Shortcuts</em> (Hotkeys)</a></h2>

If the snippet definition includes a shortcut and is part of a currently active bundle you can insert <b>the text from Part 1</b> OR <b>run the script</b> by pressing the hotkey WITHOUT activating the Lintalist search window. Shortcuts are disabled while the Lintalist search window is active. 

<span class='tip'>You can enable / disable the use of Shortcuts via the Tray menu, or the button in the toolbar in the search window</span>

<h2 id='Shorthand'><a href='#Shorthand' class='headline'>Using <em>Shorthand</em> (Abbreviations)</a></h2>

If the snippet definition includes a shorthand and is part of a currently active bundle you can insert <b>the text from Part 1</b> OR <b>run the script</b> by typing the abbreviation (= the shorthand) followed by a <b>Space</b> or <b>Tab</b> WITHOUT activating the Lintalist search window. Shorthand is disabled while the Lintalist search window is active.

<span class='tip'>You can enable / disable the use of Shorthands via the Tray menu, or the button in the toolbar in the search window</span>

<h2 id='KeyboardShortcuts'><a href='#KeyboardShortcuts' class='headline'>Lintalist Keyboard <em>Shortcuts</em></a></h2>

Apart from the hotkeys defined in bundles, Lintalist has two general sets of hotkeys, one while Lintalist waits in the background and one while the search window is active. Bring up the search window just press <kbd>CAPSLOCK</kbd> (default setting)

Shortcuts while search window is not active
<table>
<thead>
<tr>
	<th width="20%">Keys</th>
	<th width="80%">Description</th>
</tr>
</thead>
<tbody>
<tr><td><b><kbd>Capslock</kbd>        </b></td><td>Start Searching (Open Lintalist search window, change via configuration, <span class='setting'>StartSearchHotkey</span> setting). If already active you can toggle between Wide and Narrow view.
As of v1.9.10+ there is a setting to also use this key to Hide the search window: <span class='setting'>StartSearchHotkeyToggle</span>.</td></tr>
<tr><td><b><kbd>Ctrl</kbd>+<kbd>Capslock</kbd></b></td><td>Start Searching in <a href="#Omni">Omnisearch</a> mode (Open Lintalist searching window, change via config).</td></tr>
<tr><td><b><kbd>Winkey</kbd>+<kbd>z</kbd></b></td><td>Start <a href="#QuickSearchHotkey">Quick search</a></td></tr>
<tr><td><b><kbd>Ctrl</kbd>+<kbd>Winkey</kbd>+<kbd>q</kbd></b></td><td>Quit Lintalist</td></tr>
</tbody>
</table>

<b>Active Lintalist Gui</b>

<table>
<thead>
<tr>
	<th width="20%">Keys</th>
	<th width="80%">Description</th>
</tr>
</thead>
<tbody>
<tr><td><b><kbd>Esc</kbd></b></td><td>Close/Hide Search Window                          </td></tr>
<tr><td><b><kbd>Up</kbd>, <kbd>Down</kbd></b></td><td>Scroll through results, NumpadUp and NumpadDown also work.</td></tr>
<tr><td><b><kbd>Enter</kbd></b></td><td>Paste Found Text (Part 1) or Run Script *1      </td></tr>
<tr><td><b><kbd>Shift</kbd>+<kbd>Enter</kbd></b></td><td>Paste Found Text (Part 2) or Run Script *1      </td></tr>
<tr><td><b><kbd>Ctrl</kbd>+<kbd>Enter</kbd></b></td><td>Paste Found Text (Part 1) and DO NOT run script </td></tr>
<tr><td><b><kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>Enter</kbd></b></td><td>Paste Found Text (Part 2) and DO NOT run script </td></tr>
<tr><td><b><kbd>Alt</kbd>+<kbd>Enter</kbd></b></td><td>Copy Text (Part 1) to clipboard *2 </td></tr>
<tr><td><b><kbd>Alt</kbd>+<kbd>Shift</kbd>+<kbd>Enter</kbd></b></td><td>Copy Text (Part 2) to clipboard </td></tr>
<tr><td><b><kbd> F2 </kbd></b></td><td>Omnisearch (toggle) <a href="#Omni">search in all bundles</a></td></tr>
<tr><td><b><kbd> F4 </kbd></b></td><td>Edit Snippet                                    </td></tr>
<tr><td><b><kbd> F5 </kbd></b></td><td>Copy Snippet and Edit (current bundle)          </td></tr>
<tr><td><b><kbd> F6 </kbd></b></td><td>Move Snippet to another bundle                  </td></tr>
<tr><td><b><kbd> F7 </kbd></b></td><td>Add new Snippet                                 </td></tr>
<tr><td><b><kbd> F8 </kbd></b></td><td>Delete Snippet                                  </td></tr>
<tr><td><b><kbd> F10 </kbd></b></td><td>Bundle properties                              </td></tr>
<tr><td><b><kbd>Ctrl</kbd>+<kbd>1..5</kbd></b></td><td>1: Sort Part 1 (toggle)
2: Sort Part 2 (toggle)
3: Sort Shorthand (toggle)
4: Sort Key (toggle)
5: Sort Bundle name (toggle)

The sort will work even the column is not visible - for example if you do not show the Bundle name in the search results (see DisplayBundle) you can still sort it.</td></tr>
<tr><td><b><kbd>Alt</kbd>+<kbd>1..0</kbd></b></td><td>You can use <kbd>Alt</kbd>+<kbd>1</kbd> to <kbd>Alt</kbd>+<kbd>0</kbd> for the first ten search results. The visual cues are disabled when using ColumnSort other than "NoSort"
These can be disabled via the <span class='setting'>ShortcutSearchGui</span> setting (Configuration).</td></tr>
<tr><td><b><kbd>Ctrl</kbd>+<kbd>t</kbd></b></td><td>Toggle Search Window on top on or off. (per search instance)</td></tr>
<tr><td><b><kbd>Ctrl</kbd>+<kbd>f</kbd></b></td><td>Set focus on the search box.</td></tr>
<tr><td><b><kbd>Tab</kbd></b></td><td>Set focus on the search results (listview) - useful for screenreaders such as NVDA.</td></tr>
</tbody>
</table>

*1 - If Scripts are Paused the script - if any - will not run and text will be sent
   - The action for a single- or doubleclick with the left mouse button can be defined in the Configuration menu
     (<span class='setting'>SingleClickSends</span> and <span class='setting'>DoubleClickSends</span>)

*2 This can be used get the selected snippet into the clipboard using other methods as well, see plugins\readme-howto.txt, "Extending Snippet processing" section 

<h2 id='TrayMenu'><a href='#TrayMenu' class='headline'>Tray <em>Menu</em></a></h2>

- <a href='#LoadAllBundles'>Load All Bundles</a>
- <a href='#Configuration'>Configuration</a>
- <a href='#Reload'>Reload Bundles</a>
- <a href='#Pause'>Pause Lintalist</a>
- <a href='#Pause'>Pause Shortcut</a>
- <a href='#Pause'>Pause Shorthand</a>
- <a href='#Pause'>Pause Scripts</a>
- <a href='index.html'>Help</a>
- Exit

<h3 id='LoadAllBundles'><a href='#LoadAllBundles' class='headline'>Load All <em>Bundles</em></a></h3>

You can tell Lintalist to simply load all bundles via the Tray menu or Bundle menu (<kbd>Alt</kbd>+<kbd>b</kbd>), these will automatically be locked until you either choose a specific bundle from the Bundle menu OR unlock it (<kbd>Alt</kbd>+<kbd>l</kbd>) in search window).

<h3 id='ReloadBundles'><a href='#ReloadBundles' class='headline'>Reload <em>Bundles</em></a></h3>

If you have added or removed a new bundle you must reload them all to ensure they are read in memory so they can be searched and new or changed shortcuts and shorthands are correctly updated. 

<h3 id='Pause'><a href='#Pause' class='headline'>Pause</a></h3>

You can pause Lintalist entirely or pause Shortcuts, Shorthand and Scripts separately. Note: you can also bypass a script with Ctrl-Enter and Ctrl-Shift-Enter, see <a href='#KeyboardShortcuts'>Lintalist Keyboard Shortcuts</a> if you select a snippet in the search window.

<h2 id='Configuration'><a href='#Configuration' class='headline'>Configuration</a></h2>

You can either edit the settings.ini file directly with a text editor (like notepad) or use the more user friendly configuration window which is available via the tray-menu. In order for the changes to take effect you must reload the application after changing any settings. If you <b>edit settings.ini manually be sure to exit Lintalist first</b> otherwise any changes you make might be overwritten by reloading Lintalist.

A description of all settings can also be found in settings.ini <!-- or in <a href="https://github.com/lintalist/lintalist/wiki/Settings">the Wiki</a>. -->

Some important options:
<table>
<thead>
<tr>
	<th>Config</th>
	<th>Description</th>
</tr>
</thead>
<tr id='SendMethod'><td><b><a href='#SendMethod' class='headline'>SendMethod</a></b></td><td>If you experience any problems with the way text is sent to the various applications you use,
  you should try various methods to see if it resolves the issue:
  1 = SendInput
  2 = SendEvent
  3 = SendPlay
  4 = ControlSend</td></tr>
<tr id='PasteDelay'><td><b><a href='#PasteDelay' class='headline'>PasteDelay</a></b></td><td>If the text of the snippet is not pasted in to your application after a search, shortcut
  or shorthand you could try to increase the number of Milliseconds before the text is 
  pasted.</td></tr>
<tr id='TriggerKeys'><td><b><a href='#TriggerKeys' class='headline'>TriggerKeys</a></b></td><td>If Shorthand is activate by default pressing a TAB and SPACE key will expand abbreviations. You can limit this to just the TAB or SPACE by editing this setting. You can also use other keys such as F1-F12 for example.
<!--
 Alt, LWin, RWin, Shift, Home, End, PgUp, PgDn, Up, Down, Left, Right
 .,¿?¡!'"()[]{, }, {}~$&*-+=\/><^|@#:`%;
-->
More options may be added in future versions such as special hotkeys.</td></tr>
<tr id='DoubleClickSends'><td><b><a href='#DoubleClickSends' class='headline'>DoubleClickSends</a></b></td><td>You can change what happens if you double click on an entry in the search results:
  1 = Paste Part1, as enter e.g. run script if present
  2 = Paste Part2, as shift-enter e.g. run script if present 
  3 = Paste Part1, as ctrl-enter e.g. always paste part1 even if script present
  4 = Paste Part2, as ctrl-shift-enter e.g. always paste part2 even if script present
  5 = Edit snippet
  6 = New snippet

  <span class='setting'>SingleClickSends</span> as of v1.4 you can also use a single click for the same actions above.
  </td></tr>
<tr id='DefaultBundle'><td><b><a href='#DefaultBundle' class='headline'>DefaultBundle</a></b></td><td>File name e.g. default.txt
  If no matching bundle can be found based on the window title load this bundle.</td></tr>
<tr id='AlwaysLoadBundles'><td><b><a href='#AlwaysLoadBundles' class='headline'>AlwaysLoadBundles</a></b></td><td>File name(s) e.g. default.txt,bbcode.txt,css.txt
  Bundles you always want to be loaded as comma separated list.
  So Lintalist will try to load one or more specific bundles based on the currently
  active application AND will always add the bundles listed here as well.</td></tr>
<tr id='MaxRes'><td><b><a href='#MaxRes' class='headline'>MaxRes</b></a></td><td>The number of maximum results while searching (loaded bundle(s) may be very large, 
  this will make the program more responsive)</td></tr>
<tr id='StartSearchHotkey'><td><b><a href='#StartSearchHotkey' class='headline'>StartSearchHotkey</a></b></td><td>The Shortcut (Hotkey) used to launch the <a href='#Searching'>Lintalist search window</a>
  (Capslock by default)
  If you press this Shortcut while the Lintalist search window is active it will toggle
  between Wide &amp; Narrow view (you can set the width and height of both views via the
  configuration menu)

  Note about <b>TeamViewer</b>: the "send key combinations" option must be enabled (checked) and you may need to experiment with a short/key combination that works for you (the default QuickSearchHotkey shortcut does seem to work out of the box for example, while Capslock may not). <a href='https://github.com/lintalist/lintalist/issues/104'>Discussion @ GH - #104</a>

  As of v1.9.10+ see the <span class='setting'>StartSearchHotkeyToggle</span> setting to Show/Hide the Search Window using the same shortcut.</td></tr>
<tr id='QuickSearchHotkey'><td><b><a href='#QuickSearchHotkey' class='headline'>QuickSearchHotkey</a></b></td><td>Hotkey used to start quick search: It will cut (ctrl-x) the word to the left, open
  Lintalist and starts a search. If only one match is found it simply pastes or runs 
  the result directly.
  Note that some editors cut or copy an entire line if no selection is made (UltraEdit, 
  Sublime Text, Editpad ...) so it may lead to some unexpected results.
  If you work with such an editor make sure you have always selected some text before 
  you start this. Some editors will allow you to change this behaviour (UE).
  If you want to disable QuickSearchHotkey simply delete the hotkey in the configuration (make it empty)
  </td></tr>
<tr id='PreviewSection'><td><b><a href='#PreviewSection' class='headline'>PreviewSection</a></b></td><td>What to show in the preview area:
  1 = Text of part one of snippet (recommended)
  2 = Text of part two of snippet (fall back on Part 1 if Part 2 is empty)
  3 = Script code of snippet (fall back to Part 1 if 3 is empty)</td></tr>
<tr id='PasteMethod'><td><b><a href='#PasteMethod' class='headline'>PasteMethod</a></b></td><td>Retain current clipboard or set it as current clipboard content
  0 = Paste snippet and retain current clipboard content (=default behaviour)
  1 = Paste snippet and keep it as the current clipboard content (so you can manually paste it again)
  2 = Don't paste snippet content but copy it to the clipboard so you can manually paste it.
  [v1.9.7+] Plugin <a href='#pastemethod-plugin'>[[PasteMethod]]</a> similar to global setting but now acts on snippet basis.
  </td></tr>
<tr id='OnPaste'><td><b><a href='#OnPaste' class='headline'>OnPaste</a></b></td><td>Exit Lintalist after pasting snippet?
  0 = No
  1 = Yes</td></tr>
<tr id='Statistics'><td><b><a href='#Statistics' class='headline'>Statistics</a></b></td><td>Default setting: turned off.
You can keep track of bundle and snippet usage by activating the Statistics. View the Stats via the Tray- or Edit menu options (Search GUI).
The Statistics are saved to statistics.ini every two hours while Lintalist is running, viewing the Statistics, and closing the program.
Note that not all the Statistics may be a 100% accurate. <a href='https://github.com/lintalist/lintalist/issues/112'>Discussion @ GH - #112</a></td></tr>
</tbody>
</table>
Edit settings.ini or choose configuration in the tray menu for more options.

<span class='small'>Settings</span>
<img src='img/lintalist-config.png' alt='Lintalist settings' border='0'  style='max-width:100%;' />

<h3 id='Configuration-MultiCaret'><a href='#Configuration-MultiCaret' class='headline'>Multi<em>Caret</em></a></h3>

You can define multiple caret locations in your snippet, see <a href='#caret-plugin'>the caret plugin</a> for a brief introduction.
Detailed information on how to setup <b>MultiCaret.ini</b> in <a href='MultiCaret.md'>docs/MultiCaret.md</a>.

<h3 id='Configuration-AltPaste'><a href='#Configuration-AltPaste' class='headline'>Alt<em>Paste</em></a></h3>

By default Lintalist uses <kbd>ctrl</kbd>+<kbd>c</kbd>, <kbd>ctrl</kbd>+<kbd>v</kbd> to copy and paste.
If you need to use other shortcuts in specific programs (console or graphics applications for example) you can define these in <b>AltPaste.ini</b>, see <a href='AltPaste.md'>docs/AltPaste.md</a> for more information.

<h3 id='Configuration-Linefeed'><a href='#Configuration-Linefeed' class='headline'>Line<em>feed</em></a></h3>

Some programs require CRLF to be used for pasting a new line into the document/control (notepad.exe for example) - otherwise pasting a snippet will have its new lines (enters, returns) 'removed' or so it seems:
<blockquote class='boxed'>line1line2line3</blockquote> <i>vs</i>
<blockquote class='boxed'>line1
line2
line3
</blockquote>
For specific programs you can define the character that needs to be used instead of the default "new line" character. This can either be one single character or multiple characters - see the linefeed.ini for more information. As an example two programs are already included, [notepad.exe] and [wordpad.exe].
This can also be useful in for applications where pasting (CR)LF may be seen as "enter" which would (accidentally) execute / start process (command line applications for example) - replacing linefeed(s) with a space would prevent this. <a href='https://github.com/lintalist/lintalist/issues/65'>Discussion @ GH - #65</a>

<h3 id='Configuration-AfterPaste'><a href='#Configuration-AfterPaste' class='headline'>After<em>Paste</em><span style='color:#080;'>.ahk</span></a></h3>

If you want to perform some special action after Lintalist performs a copy or paste you can create a file in the include\ folder:

Mandatory filename: AfterPaste.ahk

The code is #include-d directly after the paste or copy command (in default.ahk) but before restoring the clipboard. It can not contain functions. 

You can use "If (Keys = [ShortcutCopy|ShortcutPaste|ShortcutCut])" to determine when you want an action to be performed - see NVDA example below.

If you want to use this in scripts as well be sure to include LLInit() in your script code so the proper values of ShortcutCopy, ShortcutPaste, and ShortcutCut are made available in the script.

<h4 id='Configuration-nvda'><a href='#Configuration-nvda' class='headline'>NVDA</a></h4>

If you want Lintalist to let NVDA speak the text of the snippet that has been pasted you can make use of some additional code.

For NVDA users there is a ready made AfterPaste.ahk

To make it work you need:

1. AfterPaste.ahk - download directly here <a href='https://raw.githubusercontent.com/lintalist/Lintalist-AfterPaste/master/AfterPaste.ahk'>https://raw.githubusercontent.com/lintalist/Lintalist-AfterPaste/master/AfterPaste.ahk</a> ( Repository <a href='https://github.com/lintalist/Lintalist-AfterPaste'>https://github.com/lintalist/Lintalist-AfterPaste</a> )
2. nvda.ahk - download directly here <a href='https://raw.githubusercontent.com/hi5/nvda-autohotkey/master/nvda.ahk'>https://raw.githubusercontent.com/hi5/nvda-autohotkey/master/nvda.ahk</a>
3. NVDA Controller DLL files - download directly here <a href='http://www.nvda-project.org/nvdaControllerClient/nvdaControllerClient_20100219.7z'>http://www.nvda-project.org/nvdaControllerClient/nvdaControllerClient_20100219.7z</a> or here <a href='https://github.com/hi5/nvda-autohotkey/blob/master/nvdaControllerClient_20100219.7z?raw=true'>https://github.com/hi5/nvda-autohotkey/blob/master/nvdaControllerClient_20100219.7z?raw=true</a>

Place AfterPaste.ahk and nvda.ahk to the lintalist\include folder.

Place the nvdaControllerClient32.dll and nvdaControllerClient64.dll files to the Lintalist main folder where lintalist.ahk and lintalist.exe are also located.

Restart Lintalist.

If NVDA is running the text of the snippet should be spoken after it has been pasted.

Note that NVDA may speak additional characters if you are using a shorthand. The combination of NVDA and AutoHotkey does not always work 100% correct when it tries to delete the typed characters before replacing it with the snippet text.

You can modify AfterPaste.ahk to better suit your needs, this may include additional calls to the nvdaCancel() function or additional Sleep to allow Lintalist more time to paste the text.

If you are using scripts and use SendKey(SendMethod, ShortcutPaste) to paste the clipboard, it will automatically Speak it as well as the default code in AfterPaste.ahk takes care of it.

<h2 id='LintalistBundles'><a href='#LintalistBundles' class='headline'>Lintalist <em>Bundles</em></a></h2>

<b>Basic structure of a Lintalist bundle</b>

Although the preferred format for many applications that support bundles, taglists, clip-lists, or snippets appears to be XML or INI, the Lintalist Bundle Format is just a formatted text file which is easy to understand and edit. 
Due to its YAML like structure* it is not as cumbersome as XML to edit in a regular everyday text editor. You can edit bundles using Lintalist as it has a <a href='#Editing'>built-in editor</a> which can <a href='#F4'>edit</a>, <a href='#F5'>copy</a>, <a href='#F6'>move</a>, <a href='#F7'>add</a>, or <a href='#F8'>remove</a> snippets from bundles or <a href='#F10'>create new bundles</a> from scratch. There are also some <a href='#BundleConvertors'>bundle converters</a> available to import data from other applications.

<em>* Inspired by Textpow http://textpow.rubyforge.org/svn/mm/manual.mm 
A Lintalist bundle has some resemblance to YAML. [ For those interested in YAML and AutoHotkey, there is a parser available for AHK, see <a href='http://www.autohotkey.com/forum/viewtopic.php?t=60670'>www.autohotkey.com/forum/viewtopic.php?t=60670</a>; <a href='http://www.autohotkey.com/forum/topic70559.html'>www.autohotkey.com/forum/topic70559.html</a> ]</em>

The bundles (text-)files are stored in the <b>bundles\</b> directory. Once you start editing bundles, a backup will be made and copied to <b>bundles\backup\</b>.

<h2 id='SnippetsBundles'><a href='#SnippetsBundles' class='headline'>Snippets <em>&amp;</em> Bundles</a></h2>

A bundle consists of one or more snippets. A snippet consists of five sections:

<table>
<thead>
<tr>
	<th>Section</th>
	<th>Description</th>
</tr>
</thead>
<tr><td><b>Part1</b> *1  </td><td>Text to paste into active application by pressing Enter, OR run script</td></tr>
<tr><td><b>Part2</b> *1  </td><td>Text to paste into active application by pressing Shift-Enter, OR run script</td></tr>
<tr><td><b>Hotkey</b>    </td><td>Paste text from Part1 in active application without searching OR run script</td></tr>
<tr><td><b>Shorthand</b> </td><td>Expand abbreviations, similar to AutoHotkey. Paste text from Part1 in active application without searching OR run script.</td></tr>
<tr><td><b>Script</b> *2 </td><td>If a snippet has a script the Text from Part1 will <b>NOT</b> be pasted but instead the script will be run if Enter or the Shortcut-key keys are pressed.</td></tr>
</tbody>
</table>
What happens when you double click on an entry in the list is determined by a setting in the configuration menu. (<span class='setting'>DoubleClickSends</span> setting)

<span class='tip'>It is advised to always have some useful content in Part1, this will ensure you can always see what you select while searching, even it if the selected snippet runs a script.</span>

*1 This allows you to search for one thing while pasting another, useful for translations or help texts or ... whatever you can think of. Look at the countries.txt or ahk.txt bundles for examples.
Note: If the part you are trying to paste is empty it will revert to the other part if possible.

*2 The script is regular AutoHotkey code, see <a href='#LintalistBundles'>Bundle format</a> for more info.

Example of a Bundle with one Snippet: <span class='llcomment'>(Light blue texts are comments and are not part of the format)</span>

<table border='0' cellpadding='0' cellspacing='0' id='borderless'>
<tr valign='top'><td width='15%'><span class='llbundle'>BundleFormat:</span></td> <td width='40%'><span class='flex'>1</span></td><td><span class='llcomment'>; This value may change in future in case of a change in format, can not be changed in Bundle Editor</span></td></tr>
<tr valign='top'><td width='15%'><span class='llbundle'>Name:</span></td>         <td width='40%'><span class='flex'>CSS</span></td><td><span class='llcomment'>; Name used in Lintalist for Menu and Status-bar, can be changed in Bundle Editor</span></td></tr>
<tr valign='top'><td width='15%'><span class='llbundle'>Description:</span></td>  <td width='40%'><span class='flex'>Bundle for Lintalist</span></td><td><span class='llcomment'> ; Can be used extra information, can be changed in Bundle Editor</span></td></tr>
<tr valign='top'><td width='15%'><span class='llbundle'>Author:</span></td>       <td width='40%'><span class='flex'>Author</span></td><td><span class='llcomment'>; Not actually used in Lintalist, can be changed in Bundle Editor</span></td></tr>
<tr valign='top'><td width='15%'><span class='llbundle'>TitleMatch:</span></td>   <td width='40%'><span class='flex'>.css</span></td><td><span class='llcomment'>; Comma separated list of partial window title matches</span></td></tr>
<tr valign='top'><td width='15%'><span class='llbundle'>Patterns:</span></td><td></td>     <td><span class='llcomment'>; Snippets start below, each new snippet starts with "- LLPart1"</span></td></tr>
<tr valign='top'><td width='15%'><span class='llbundle'>- LLPart1:</span></td>    <td width='40%'><span class='flex'>border-radius: ^|px;</span></td><td><span class='llcomment'>; Start of snippet, text pasted with Enter or Double-click</span></td></tr>
<tr valign='top'><td width='15%'><span class='llbundle'>&nbsp;&nbsp;LLPart2:</span></td>    <td width='40%'><span class='flex'>border-radius: [[input=Border radius]]px;
-moz-border-radius: [[input=Border radius]]px;
-webkit-border-radius: [[input=Border radius]]px;
</span></td><td><span class='llcomment'>; Text pasted with Shift-Enter</span></td></tr>
<tr valign='top'><td width='15%'><span class='llbundle'>&nbsp;&nbsp;LLKey:</span></td>      <td width='40%'><span class='flex'>^+b</span></td><td><span class='llcomment'>; Shortcut, if pressed Text from LLPart1 will automatically be inserted OR script will be run if present</span></td></tr>
<tr valign='top'><td width='15%'><span class='llbundle'>&nbsp;&nbsp;LLShorthand:</span></td><td width='40%'><span class='flex'>bdrs</span></td><td><span class='llcomment'>; Type this shorthand followed by space or tab and Text from LLPart1 will automatically be inserted OR script will be run if present</span></td></tr>
<tr valign='top'><td width='15%'><span class='llbundle'>&nbsp;&nbsp;LLScript:</span></td>   <td width='40%'><span class='flex'></span></td><td><span class='llcomment'>; If present, this AHK code will be run if the snippet is selected via Enter, shortcut or shorthand</span></td></tr>
</table>

<h3 id='Part1-2'><a href='#Part1-2' class='headline'>Part<em>1</em> &amp; Part<em>2</em></a></h3>

As described above, a snippet consists of two parts which are both shown in the search results (if both are present).

While you can perfectly use Lintalist without ever having to use the Part2 of the snippet, it can be of value in a number of cases.

<b>Usage 1 - having two options to paste</b>

By having a snippet consisting of two parts, you can search for one type of information, but paste something else.
This is illustrated by the <a href="https://github.com/lintalist/lintalist-bundles/blob/master/countries.txt">Countries bundle here</a>. 

In Part1 of the snippet you will find the official ISO name, and in Part2 the two letter alpha code, e.g GB for United Kingdom, CA for Canada. This lets you look up a country and either paste the official name by pressing <kbd>Enter</kbd>, or if you need it, the two letter alpha code by pressing <kbd>Shift</kbd>+<kbd>Enter</kbd>.

<table>
<tr>
<th>Paste Part1 (enter)</th>
<th>Paste Part2 (shift-enter)</th>
</tr>
<tr>
<td>United Kingdom</td>
<td>GB</td>
</tr>
<tr>
<td>Canada</td>
<td>CA</td>
</tr>
</table>
<b>Usage 2 - description / title</b>

You can also use Part2 as a short title to describe the purpose of Part1. In the Markdown bundle below Part2 is used as a description, that way you can for example search for 'bold' to find the bold snippet, this would not be possible without a useful description in Part2 as the markup code in Part1 does not have any useful information to search for.

<table>
<tr>
<th>Paste Part1 (enter)</th>
<th>Paste Part2 (shift-enter)</th>
</tr>
<tr>
<td>### ^|</td>
<td>Heading 3</td>
<tr>
<td>**[[selected]]**</td>
<td>Bold</td>
<tr>
<td>__[[selected]]__</td>
<td>Italic</td>
</tr>
</table>

If you have several very similar snippets in a bundle, you can add some info in Part2 of the snippet so the second column in the search results will help you find the correct one:

<table>
<tr>
<th>Paste Part1 (enter)</th>
<th>Paste Part2 (shift-enter)</th>
</tr>
<tr>
<td>very long snippet that looks similar to many other snippets in the bundle....</td>
<td>FAQ</td>
</tr>
<tr>
<td>very long snippet that looks similar to many other snippets in the bundle....</td>
<td>Email</td>
</tr>
<tr>
<td>very long snippet that looks similar to many other snippets in the bundle....</td>
<td>Excel</td>
</tr>
</table>

Another example would be time-sheet management. Often certain types of jobs or clients have special codes assigned to them. Instead of having to remember these codes you can simply create a bundle which would allow you to search for a clients name and paste the code in your time-sheet.

<table>
<tr>
<th>Paste Part1 (enter)</th>
<th>Paste Part2 (shift-enter)</th>
</tr>
<tr>
<td>1578A</td>
<td>John Smith</td>
</tr>
<tr>
<td>6335D</td>
<td>Ms. Jones</td>
</tr>
<tr>
<td>X-7685</td>
<td>Replaced plumbing</td>
</tr>
</table>

<h2 id='InteractiveBundleText'><a href='#InteractiveBundleText' class='headline'>Interactive bundle text (<em>or Plugins</em>)</a></h2>

Part1 and/or Part2 of a snippet can have special codes to insert specific data.
The following <code>Snippet Codes</code> (or plugins) are available. 
You can develop your own if you learn to write AutoHotkey scripts, see <b><a href='../plugins/readme-howto.txt'>plugins\readme-howto.txt</a></b> for more info.

Reminder: You can also use <a href='#FormattedText'>Formatted Text Snippets</a> (html, markdown, image and RTF).

Plugins are processed as follows:

1. Local variables first
2. Process each plugin in the order they are presented in the snippet e.g. left to right.
3. If it is a nested plugin: the order is from the left to right AND from the inside out.

Consider the following example:

<blockquote class='boxed'>
This is <code>[[plugin1]]</code>
we continue with a triple nested plugin:
<code>[[plugin2 [[plugin2-1 [[plugin2-1-1]] ]] ]]</code>
and ending with
<code>[[plugin3]]</code>

</blockquote>
The plugins are processed in the following order:
1. [[plugin1]] is processed first
2. followed by [[plugin2-1-1]] followed by [[plugin2-1]] followed by [[plugin2]]
3. and finally [[plugin3]]

<b>Available plugins:</b>

<span class='tip' id='Brackets'><a href='#Brackets' class='headline'>[[..]] (Double square brackets) are used for plugin snippet notation. You can escape these double square brackets to prevent them being interpreted as a plugin: 
<span class='highlight'>\[\]</span>, and <span class='highlight'>\]\]</span>
To escape [,], and | in the <em>options</em> of a plugin, use: <span class='highlight'>&lt;SB</span>, <span class='highlight'>&gt;SB</span>, and <span class='highlight'>^SB</span>. See <span class='setting'>ParseEscaped</span> in settings.ini to change this.</a>
</span>

<table>
<thead>
<tr>
	<th>Code &amp; Parameters</th>
	<th>Description</th>
</tr>
</thead>
<tr id='caret-plugin'><td><a href='#caret-plugin' class='headline'><code>^|</code></a> or <code>^$</code></td><td>Caret position after pasting.
Basic example: "Hello, this is a sample <code>^|</code>text"
The ^| (or ^$) code will be removed from the text and the caret will 
be placed before the word `text`.

Alternative notation: <code>^$</code> useful when you want to use this in combination with the Choice plugin where the | character would cause a problem - <a href='https://github.com/lintalist/lintalist/issues/124'>Discussion @ GH - #124</a>

If you paste a snippet into an editor which supports Multi-caret/edit you can use those in Lintalist snippets by placing multiple caret locations in your snippet. If you don't want to use MultiCaret simply avoid using multiple ^| in a Lintalist snippet.
Supported editors: Atom, Brackets, EverEdit, Komodo Edit, Sublime Text, TextAdept, UltraEdit 23+, Visual Studio Code editor. See <a href='MultiCaret.md'>docs/MultiCaret.md</a> for details.

<b>Notes:</b>  
1. The caret position may be incorrect for snippets with Unicode characters, complex scripts, glyphs etc. (trial and error may work). It may also depend on how the target application handles (auto) indentation or reformats/prettyfies pasted code. In such cases a specific script may be able to resolve such issues - <a href='https://github.com/lintalist/lintalist/issues/123'>Discussion @ GH - #123</a>
2. For screenreaders: the plugin consists of two characters, a Circumflex Accent followed by a Vertical bar or pipe symbol. A Circumflex Accent followed by a dollar sign is also permitted.</td></tr>

<tr id='c-plugin'><td><a href='#c-plugin' class='headline'><code>[[C=Char|Repeat]]</code></a></td><td>By default pasted texts are trimmed which means spaces and tabs will be trimmed from the snippet. You can use this plugin to insert one or more spaces and/or tabs at the beginning or end of a snippet. Or you can use it as a shorthand-code to insert a repeating text or character(s).
Basic example <code>[[C=-|30]]</code> insert 30 -'s
Use [[C=space]] or [[C=\s]] for a space, [[C=tab]] or [[C=\t]] for a tab, and [[C=enter]] or [[C=\n]] for a new line.

Neat trick: using a local variable or User input
<code>[[C=[[Var=localvar]]|10]]</code> Repeat the local variable 'localvar' 10 times.
<code>[[C=[[Input=Repeat which character|-]]|[[Input=How many times?|10]]]]</code> Repeat the entered character(s) 10 times.

      Create a HTML table asking for Number of Columns and Rows:
<blockquote class='boxed'>&lt;table&gt;
<b style='color:blue;'>[[C=</b>&lt;tr&gt;<b style='color:blue;'>[[C=</b>&lt;td&gt;&lt;/td&gt;<b style='color:red;'>|</b><b style='color:blue;'>[[Input=</b>How many columns?<b style='color:blue;'>]]]]</b>&lt;/tr&gt;
<b style='color:red;'>|</b><b style='color:blue;'>[[Input=</b>How many rows?<b style='color:blue;'>]]]]</b>&lt;/table&gt;</blockquote></td></tr> 

<tr id='calc-plugin'><td><a href='#calc-plugin' class='headline'><code>[[Calc=]]</code></a> *2</td><td>Evaluation of the math expressions - see <a href='#Calc'>documentation below</a>.</td></tr>

<tr id='calendar-plugin'><td><a href='#calendar-plugin' class='headline'><code>[[Calendar=Format|LCID|to]]</code></a></td><td>Displays a calendar window to allow you to select a date in a specific format (see DateTime below).
Basic example <code>[[Calendar=dd-MMM-yyyy]]</code> --> Select a date and it will be inserted like so: 25-Jan-2011

[v1.8+] You can now specify an LCID. If you do not define one, the current user's locale is used to format the Date string. To use the system's locale instead, specify LSys. To use a specific locale, specify the letter L followed by a hexadecimal or decimal locale identifier (LCID). You can find a list of Locale IDs assigned by Microsoft here <a href='https://msdn.microsoft.com/goglobal/bb964664.aspx'>msdn.microsoft.com/goglobal/bb964664.aspx</a>

If you use a date range (e.g. start/end date) the word " to " is automatically inserted between the two dates, if you want something else such as another language or character " - " simply specify this as the third parameter:
<code>[[Calendar=dd-MMM-yyyy|| - ]]</code>

</td></tr>

<tr id='choice-plugin'><td><a href='#choice-plugin' class='headline'><code>[[Choice=item1|item2|..]]</code></a></td><td>Selected an item from a list. 
The options are delimited by a | character.

Basic example <code>[[Choice=Red|Green|Blue]]</code> inserts the selected colour in the text.

[v1.9+] If the first option starts with a question mark (?), the first option will be removed from the list and shown as text in the Choice GUI. This can serve as a hint or reminder what the Choice is about. 
Example: <code>[[Choice=<b class='highlight'>?</b>Favourite colour|Red|Green|Blue]]</code>. Same as above only the GUI will show "Favourite colour" in the GUI above the options.

[v1.9.8+] If the first option starts with a exclamation mark (!), you can filter the options as you type (similar to Lintalist main search). 
Example: <code>[[Choice=<b class='highlight'>?!</b>Favourite colour|Red|Green|Blue]]</code>. Same as above only the GUI will show "Favourite colour" in the GUI above the options and a search box so you can filter the options to choose from. You can ommit the question option, so this is also valid:
<code>[[Choice=<b class='highlight'>!</b>|Red|Green|Blue]]</code>

The order of <b>?!</b> doesn't matter.
</td></tr>

<tr id='clipboard-plugin'><td><a href='#clipboard-plugin' class='headline'><code>[[Clipboard]]</code></a> *1</td><td>Insert current Clipboard content.
* Additional parameters are available, see <a href='#ClipEx'>Extending Clipboard &amp; Selected text</a>.</td></tr>

<tr id='comment-plugin'><td><a href='#comment-plugin' class='headline'><code>[[Comment=]]</code></a></td><td>Add a comment to a snippet. The entire comment will be removed from the snippet before it is pasted. As a reminder: You can also use <a href='#Part1-2'>Part2</a> of a snippet for "hints" or notes".

Example:
<code>[[Comment=Add your comment text here which can be searched but all of it will be removed before pasting]]</code></td></tr>

<tr id='counter-plugin'><td><a href='#counter-plugin' class='headline'><code>[[Counter=Name|Value|Reset]]</code></a></td><td>You can use multiple counters <b>across bundles</b>.
Basic example <code>[[Counter=InvoiceNumber]]</code> --> increment by one and insert value of InvoiceNumber.
By default it will increment the counter by one, you can change that by specifying the Value.
<code>[[Counter=InvoiceNumber|5]]</code> Add 5 and insert.

<code>text &hellip; [[counter=cName]] &hellip; text &hellip; 2nd instance [[counter=cName<b>|0</b>]] with same value</code>

These counters are saved between sessions and stored in settings.ini
You can manage these counters (add, edit, delete) via the tray menu option: Manage counters.

<b>Tips</b>:
1. if you want to use the same counter multiple times in a snippet without incrementation simply "Add zero" (<b>|0</b>) for the second and subsequent instances. 
2. if a counter is not created/managed using the "Manage counters" tool the unknown counter will be automatically created. This way you can create counters 'on the fly' using for example the <code>[[Input=]]</code> plugin.
3. [v1.9.7+] You can (re)set a counter each time you start a snippet by using the <b>|reset</b> option:
<code>[[Counter=CounterName|2|0]]</code> would restart the counter at 0 and +2. This can be useful in a SplitRepeat for example so you can create a numbered list. (see the <a href='https://github.com/lintalist/lintalist-bundles/blob/master/markdown.txt'>MarkDown bundle, Ordered list snippet</a>)
</td></tr>

<tr id='datetime-plugin'><td><a href='#datetime-plugin' class='headline'><code>[[DateTime=Format|Value|TimeUnits|LCID]]</code></a></td><td>Insert current Date and/or Time using the FormatTime options,
<a href='https://autohotkey.com/docs/commands/FormatTime.htm'>autohotkey.com/docs/commands/FormatTime.htm</a>
(Date & Time formats, may be dependent on your user locale).
Basic example <code>[[DateTime=dd-MMM-yyyy]]</code> --> 25-Jan-2011 (Todays date)

You can also perform some calculations, example:
<code>[[DateTime=dd-MMM-yyyy|5|Days]]</code> --> 30-Jan-2011, 5 days from today.
TimeUnits can be either Seconds, Minutes, Hours, or Days.

[v1.8+] You can now specify an LCID, see Calendar above. Example: <code>[[DateTime=dd MMMM yyyy|||L1036]]</code> --> show month in French.
The LCID can be decimal or hexadecimal e.g. L1036 and L0x040C are the same: French.
</td></tr>

<tr id='file-plugin'><td><a href='#file-plugin' class='headline'><code>[[File=Filename|select|clean]]</code></a></td><td>Will insert text from specified file into the text, 
either full path or relative to Lintalist directory.
Basic example <code>[[File=c:\file.txt]]</code> inserts content from that file into the text.

[v1.6+] The file plugin has two options <code><i>|Select</i></code> and <code><i>|Clean</i></code>.

<code>|Select</code>: if you want to select a file to use add <code><i>|Select</i></code>. The "filename" is now used as the directory where you want the Select File dialog to start. If you leave it empty it will start in the Lintalist folder, you can use relative paths (..)
Basic example: <code>[[File=..|select]]</code> --> select a text file in the parent folder of Lintalist.

<code>|Clean</code>: if you know the text file has the following characters in them |[] <b>AND</b> you are using the File plugin as an input for another plugin you need to tell Lintalist to remove the []| characters by using the |Clean option. Otherwise the plugin using the file as an input will most likely fail.
The order of Select and Clean doesn't matter, you can use one or both at the same time.
</td></tr>

<tr id='filelist-plugin'><td><a href='#filelist-plugin' class='headline'><code>[[FileList=?Options|path]]</code></a></td><td>Return a delimited list of files from one or more folders. A useful companion to <code>[[Choice]]</code> if you want to select a specific file.

Both asterisks and question marks are supported as wildcards, use a ; (semicolon) for multiple wildcards:

folder\*.jpg;*.png

will return a list of all JPG and PNG files in a folder.

Options:

D : Include directories (folders).
F : Include files. If both F and D are omitted, files are included but not folders.
R : Recurse into subdirectories (subfolders). If R is omitted, files and folders in subfolders are not included.

P : Use full file path, if omitted only the filenames are returned

Delimiter to use, default is a pipe (|) character, alternatively use:

SC: c comma
SN: n newline
ST: t tab

T : use path from active panel in Total Commander (assuming only one instance is active)
E : use path from current folder in Explorer (assuming only one instance is active)
W : current window title path (some programs show full path in Title, we can use this)

U : Uri paths use / not \
X : Relative paths, strip root folder path e.g.
    "?RXUP|<span style='color:blue'>c:\server\mywebsite\</span>*.css" &rarr; selected file: <span style='color:blue'>c:\server\mywebsite\</span>css<span style='color:magenta'>\</span>style.css &rarr; result: css<span style='color:magenta'>/</span>style.css

! : Assume FileList was called using [[Choice=!]] "filter as you type" so
    <code>[[FileList=!wp|*.txt]]</code> becomes <code>[[Choice=!Filter|[[FileList=!wp|*.txt]]]]</code> automatically. Default delimiter assumed (pipe character)
</td></tr>

<tr id='input-plugin'><td><a href='#input-plugin' class='headline'><code>[[Input=Text|Default]]</code></a></td>
<td>Ask for user input (simple inputbox)
Basic example <code>[[Input=Customer's name?]]</code>
Note: If you want to use the same user input more than once you can do so by simply repeating the [[Input=Question]] code.
You can provide a default response after the question by using the pipe char (|),
example <code>[[Input=My favourite color|Green]]</code>

[v1.9.9+] See remarks at <code>[[Query]]</code> below about "automatic" inclusion of one or more <code>[[Input=]]</code> plugins.
</td></tr>

<tr id='pastemethod-plugin'><td><a href='#pastemethod-plugin' class='headline'><code>[[PasteMethod=0|1|2]]</code></a></td><td>
Similar to the Global PasteMethod setting you can use this plugin to define it per snippet:
0: Paste snippet and retain current clipboard content (=default behaviour)
1: Paste snippet and keep it as the current clipboard content (so you can manually paste it again)
2: Don't paste snippet content but copy it to the clipboard so you can manually paste it.

[v1.9.7+]
</td></tr>

<tr id='random-plugin'><td><a href='#random-plugin' class='headline'><code>[[Random=1|10]]</code></a>
or
<code>[[Random=a|b|c]]</code></td><td>There are two methods to use Random. 1: Return a random number, 2: Return a random item from a pipe delimited list.
<code>[[Random=1|10]]</code> -> return value between 1 and 10
<code>[[Random=item|from|a list of|entries]]</code> -> returns random item from one of these four items

[v1.8+]
</td></tr>

<tr id='selected-plugin'><td><a href='#selected-plugin' class='headline'><code>[[Selected]]</code></a> *1</td><td>Replace by selected text if any. This will allow you to insert any 
selected text, for example to wrap selected text in a HTML tag.
* Additional parameters are available, see <a href='#ClipEx'>Extending Clipboard &amp; Selected text</a>.</td></tr>

<tr id='snippet-plugin'><td><a href='#snippet-plugin' class='headline'><code>[[Snippet=Shorthand]]</code></a></td><td>Will insert text from another snippet at the specified location.
Use the Shorthand code of another snippet <b>from the same bundle</b>. This way you can chain snippets together.
Basic example <code>[[Snippet=shorthandcode]]</code></td></tr> 

<tr id='snippet-split'><td><a href='#snippet-split' class='headline'><code>[[Split=input|?1|?2]]</code></a> *3         </td><td>Split input into variables - see <a href='#Split'>Split and SplitRepeat</a> below.</td></tr> 
<tr id='snippet-split'><td><a href='#snippet-split' class='headline'><code>[[SplitRepeat=input|?1|?2|?3]]</code></a> *3</td><td>Split input into variables - see <a href='#Split'>Split and SplitRepeat</a> below.</td></tr> 

<tr id='localvar-plugin'><td><a href='#localvar-plugin' class='headline'><code>[[Var=Name]]</code></a> *4</td><td>Insert local variables. These variables are available <b>across bundles</b>. See <a href='#LocalBundle'>Local bundle variables</a> below. As of v1.0.3 local variables are also available in scripts (making it the only plugin available in scripts for the time being)</td></tr>

<tr id='string-plugin'><td><a href='#string-plugin' class='headline'><code>[[String=<em>text</em>|option]]</code></a> </td><td>Transform the <em>text</em>. See <a href='#ClipEx'>Extending Clipboard &amp; Selected text</a>. (The wrap option is not supported for the String plugin)

Enter your name <code>[[String=[[Input=Name?]]|Upper]]</code>
will transform the entered name to upper case text.</td></tr>

<tr id='query-plugin'><td><a href='#query-plugin' class='headline'><code>[[Query]]</code>, <code>[[Query1]]</code>, <code>[[Query2]]</code></a></td><td>Insert the text you searched for in your Snippet. The query plugin is processed <b>before</b> all other plugins.

By default the QueryDelimiter character used is a ">". Everything after this character is ignored while searching your bundles.
If you use a QueryDelimiter two additional plugins (think of them as variables) are created, <code>[[Query1]]</code> and <code>[[Query2]]</code>.

<code>[[Query]]</code>  contains the entire search string including the QueryDelimiter.
<code>[[Query1]]</code> contains the text <b>before</b> the QueryDelimiter.
<code>[[Query2]]</code> contains the text <b>after</b> the QueryDelimiter.

Example:

<em class='sel' style='font-style: normal; background-color:#eee;color:#000;border-radius:5px;padding-left:1em;padding-right:1em;'>searching for this > ignore everything we type here for the search</em>

Would result in the following Query related content:

<code>[[Query]]</code>  : searching for this > ignore everything we type here for the search
<code>[[Query1]]</code> : searching for this
<code>[[Query2]]</code> : ignore everything we type here for the search

Spaces are automatically trimmed (left and right). This plugin can be disabled if you keep the Delimiter empty. You can set the Delimiter to use via <b>QueryDelimiter</b> (Configuration). When disabled any <code>[[Query]]</code> plugins are removed from the snippet.

<b>Automatic replacement with <code>[[Input=]]</code></b>

When a snippet including a <code>[[Query]]</code> plugin is used via a <em>shortcut</em> or <em>shorthand</em> it is bypassing the search Gui. In these cases <code>[[Query]]</code> will automatically be replaced by an <code>[[Input=]]</code> to ask for user input. As a reminder you can add the Question used in the <code>[[Input=]]</code> plugin to your <code>[[Query]]</code> plugin as follows:

<b>Query</b>                                           becomes <b>Input</b>
<code>[[Query=Enter text for search query]]</code>         -> <code>[[Input=Enter text for search query]]</code>        
<code>[[Query1=Query1: text before QueryDelimiter]]</code> -> <code>[[Input=Query1: text before QueryDelimiter]]</code>
<code>[[Query2=Query2: text after QueryDelimiter]]</code>  -> <code>[[Input=Query2: text after QueryDelimiter]]</code> 


<b>Tip:</b> Use the <code>[[Split]]</code> plugin to process Query, Query1 or Query2 and use parts of the Query in various locations in your snippets.

[v1.9.9+]</td></tr>

<tr id='snippet-richformat'><td><a href='#snippet-richtformat' class='headline'><code>[[html]]</code>, <code>[[md]]</code>, <code>[[rtf=]]</code>, <code>[[image=]]</code></a> </td><td>Use these for <a href='#FormattedText'>Formatted Text Snippets</a>.
	
<b>Tip:</b> Image plugin accepts 'clipboard' as a valid path to an image <code>[[image=[[clipboard]]]]</code>.
You can combine this with <code>[[PasteMethod=2]]</code> to leave an image on the clipboard (for example to paste it as new layer in an image in a graphics program)</td></tr>

<tr><td id='snippet-llpart'><a href='#snippet-llpart' class='headline'><code>[[llpart1]]</code>, <code>[[llpart1]]</code></a>, <code>[[llshorthand]]</code></td><td>Use these for as placeholders for Snippet Part1, Part2, and Shorthand in your <a href='#Script'>Script</a>.

[v1.9.3+]
</td></tr>

</tbody>
</table>

<h3 id='ClipEx'><a href='#ClipEx' class='headline'>*1 <em>Extending Clipboard &amp; Selected text</em></a></h3>

Additional parameters are available for the <code>[[Clipboard]]</code> and <code>[[Selected]]</code> plugins.

Parameters are defined as followed:

<code>[[Clipboard=options]]</code> and <code>[[Selected=options]]</code>

<table>
<tr>
<th>Options</th>
<th>Shorthand</th>
<th>Purpose</th>
</tr>
<tr><td>Upper </td><td align=middle>U</td><td width=100%>Transforms selected text or clipboard to: UPPERCASE.</td></tr>
<tr><td>Lower	</td><td align=middle>L</td><td width=100%>Transforms selected text or clipboard to: lowercase.</td></tr>
<tr><td>Title	</td><td align=middle>T</td><td width=100%>Transforms selected text or clipboard to: Title Case. 
Additional options are available via the <a href='https://github.com/lintalist/TitleCase/blob/master/TitleCase.ahk'>TitleCase()</a> function:

<code>[[Selected=T|language|ini-file]]</code>

<em>language</em> and <em>ini-file</em> are optional. If you omit both, a TitleCase.ini file will be created in your Lintalist folder.

The "language" is the Section title you can use to define various rules on how the Title Case should process the text.
So you can use one ini (TitleCase.ini) for multiple "languages". Default is "en" (for English). 
If you wish you can also create multiple ini files and you can pass on the name of the ini file you would like to use.
Path to the ini can be relative to the Lintalist folder or a fixed path.
Please refer to the <a href='https://github.com/lintalist/TitleCase/blob/master/TitleCase.ahk'>TitleCase()</a> documentation for more information on how to setup your ini file(s).

Examples:

<code>[[Selected=T|fr]]</code> &rarr; use the FR Section of TitleCase.ini.

<code>[[Selected=T||MyTitleCase.ini]]</code> &rarr; use the EN Section of MyTitleCase.ini 

Note: If you prepare your own ini files be sure to use UTF-16 encoded files to ensure proper processing of unicode / extended Ascii characters. See the AutoHotkey <a href='https://www.autohotkey.com/docs/commands/IniRead.htm#Remarks'>IniRead</a> documentation.

</td></tr>
<tr><td>Trim 	</td><td align=middle>R</td><td width=100%>Trim spaces/tabs from the beginning and end of the selected text or clipboard.</td></tr>
<tr><td>Sentence</td><td align=middle>S</td><td width=100%>Transforms selected text or clipboard to: Sentence case.</td></tr>
<tr><td>Wrap|before|after</td><td align=middle>W</td><td>Wraps selected text or clipboard with the defined before and after texts.
If the selection of clipboard has multiple lines each line is wrapped in these texts individually. Example: <code>[[Selected=Wrap|&lt;li&gt;|&lt;/li&gt;]]</code> will wrap each line in li html tags.

Before:		After:
line1		&lt;li&gt;line1&lt;/li&gt;
line2		&lt;li&gt;line2&lt;/li&gt;
line3		&lt;li&gt;line3&lt;/li&gt;</td></tr>
</table>

<h3 id='Calc'><a href='#Calc' class='headline'>*2 <em>Calc plugin</em></a></h3>

The evaluations of the math expressions in the Calc plugin are done by the Monster/Eval function by Laszlo.
It is capable of basic and advanced math operations including standard AutoHotkey and predefined functions.
A number of predefined constants are also available. <span class='small'>Source: <a href='http://www.autohotkey.com/forum/viewtopic.php?t=17058'>forum thread</a></span>

&#8226; Arithmetic operators: +, -, *, /, \ (or % = mod), ** (or @ = power)
&#8226; AHK Functions:        <a href="https://autohotkey.com/docs/Functions.htm#Abs">Abs</a>, <a href="https://autohotkey.com/docs/Functions.htm#Ciel">Ceil</a>, <a href="https://autohotkey.com/docs/Functions.htm#Exp">Exp</a>, <a href="https://autohotkey.com/docs/Functions.htm#Floor">Floor</a>, <a href="https://autohotkey.com/docs/Functions.htm#Log">Log</a>, <a href="https://autohotkey.com/docs/Functions.htm#Ln">Ln</a>, <a href="https://autohotkey.com/docs/Functions.htm#Round">Round</a>, <a href="https://autohotkey.com/docs/Functions.htm#Sqrt">Sqrt</a>, <a href="https://autohotkey.com/docs/Functions.htm#Sin">Sin</a>, <a href="https://autohotkey.com/docs/Functions.htm#Cos">Cos</a>, <a href="https://autohotkey.com/docs/Functions.htm#Tan">Tan</a>, <a href="https://autohotkey.com/docs/Functions.htm#ASin">ASin</a>, <a href="https://autohotkey.com/docs/Functions.htm#ACos">ACos</a>, <a href="https://autohotkey.com/docs/Functions.htm#ATan">ATan</a>
&#8226; Predefined functions: SGN, Fib, Fac (=sign, Fibonacci numbers, Factorials)
&#8226; Predefined constants: e, pi, inch, foot, mile, ounce, pint, gallon, oz, lb.

<table>
<tr><th>In [[calc=]]</th><th>Outcome</th></tr>
<tr><td>1 + 1</td><td width=40%>2</td></tr>
<tr><td>6 / 2</td><td width=40%>3</td></tr>
<tr><td>12 + 3 * 4 / 2 - 1</td><td width=40%>17</td></tr>
<tr><td>5 \ 2</td><td width=40%>1 (5 mod 2 = 1)</td></tr>
<tr><td>100/3 $2</td><td width=40%>33.33 (2 decimal places)</td></tr>
<!--
<tr><td></td><td width=40%></td></tr>
-->
</table>

<b>Example</b> using input:
<blockquote class='boxed'>
Converting Celsius to Fahrenheit &deg;C x 9/5 + 32. Today it was:
<code>[[Calc=([[Input=What is todays temperature in C?]]*(9/5))+32]]&deg;F (=[[Input=What is todays temperature in C?]]&deg;C)</code>
... you can check this conversion at http://www.wbuf.noaa.gov/tempfc.htm

</blockquote>

<b>Example</b> using input &amp; local variable:
<blockquote class='boxed'>
You have bought <code>[[Input=Number bought]]</code> items at a price of <code>[[var=itemprice]]</code> each.
That brings the total to: <code>[[Calc=[[Input=Number bought]]*[[var=itemprice]]]]</code>.

</blockquote>

<b>Example</b> rounding off the result to a specific number of Decimal places $N (N decimal places):
<blockquote class='boxed'>
100 divided by 3 is: <code>[[Calc=100/3 <b>$2</b>]]</code>.

</blockquote>

Note about trigonometry functions: Sin(), Cos(), Tan() etc use <b>radians</b>. To convert a radians value to <b>degrees</b>, multiply it by 180/pi (approximately 57.29578). To convert a degrees value to radians, multiply it by pi/180 (approximately 0.01745329252). The value of pi (approximately 3.141592653589793) is 4 times the arctangent of 1. <span class='small'>Source: <a href='https://autohotkey.com/docs/Functions.htm#Sin'>AHK Docs</a></span>	
In <b>calc</b> you can use this as follows:

	sin(30/180*pi)
	180/pi*asin(0.5)

<b>Advanced math:</b> examples of the more advanced options are available in the <a href='https://autohotkey.com/board/topic/15675-monster-evaluate-math-expressions-in-strings/'>forum thread</a> (or study the code in plugins\calc.ahk). Should you have a requirement for such advanced operations you are encouraged to experiment with a standalone Eval script before applying this to the Calc plugin.

<h3 id='Split'><a href='#Split' class='headline'>*3 <em>Split and SplitRepeat</a></em></h3>

<code>[[Split=input|?1|?2]]</code> and <code>[[SplitRepeat=input|?1|?2|?3]]</code>

The <b>Split</b> plugin creates an "array" of sequentially numbered temporary variables which you can place anywhere in your snippet.
This can for example be useful if you copy multiple columns and / or rows from a spreadsheet and want to insert them at specific locations in your snippet text.

<table>
<tr>
<th>Option</th>
<th>Meaning</th>
</tr>
<tr><td>input</td><td>Can be text, another plugin, or the reserved keywords: <em>selected</em> and <em>clipboard</em>.
<b>Note:</b> the input must not contain the following three characters: <b>[]|</b>
</td></tr>
<tr><td>?1</td><td>the character to split the input at.
There are a number of reserved options <em>\s</em> = space, <em>\t</em> = tab, <em>\n</em> = new line - but you should be able to use any character apart from these: []|
If only <em>?1</em> is used it will create a simple array of variables you can use like so <code>[[sp=1]]</code> <code>[[sp=2]]</code> <code>[[sp=3]]</code> etc
Think of it as a <b>column</b> marker.</td></tr>
<tr><td>?2</td><td>You can omit this, but if you do use a second parameter it will create a two-dimensional array of variables you can use like so <code>[[sp=1,1]]</code> <code>[[sp=1,2]]</code> <code>[[sp=3,2]]</code> etc.
If you use both <em>?1</em> and <em>?2</em> - <em>?1</em> is the <b>row</b> marker, and <em>?2</em> the <b>column</b> marker.</td></tr>
</table>

<b>Examples</b>

This selected text: <em class='sel'>word1 word2 word3</em>

<blockquote class='boxed'>
<code>[[Split=selected|\s]]</code>
Hello <code>[[sp=1]]</code>
Hello <code>[[sp=2]]</code>
Hello <code>[[sp=3]]</code>

</blockquote>
Result:
<blockquote class='boxed'>
Hello word1
Hello word2
Hello word3

</blockquote>

Read a text file and use the third line:
<blockquote class='boxed'>
<code>[[Split=[[File=example.txt]]|\n]]</code>
The third line of the text file is <code>[[sp=3]]</code>

</blockquote>

Two-dimensional example - this selected text:

<em class='sel'>wordA1 wordA2 wordA3
wordB1 wordB2 wordB3</em>

using this snippet
<blockquote class='boxed'>
<code>[[Split=selected|\n|\s]]</code>
Hello <code>[[sp=1,1]]</code> ; wordA1
Hello <code>[[sp=1,2]]</code>
Hello <code>[[sp=1,3]]</code>
Hello <code>[[sp=2,1]]</code>
Hello <code>[[sp=2,2]]</code> ; wordB2
Hello <code>[[sp=2,3]]</code>

</blockquote>
Result:
<blockquote class='boxed'>
Hello wordA1
Hello wordA2
Hello wordA3
Hello wordB1
Hello wordB2
Hello wordB3

</blockquote>



<b>SplitRepeat</b> is similar to Split but has the unique ability to repeat a snippet until all "parts" have been processed.
It takes up to three "split" parameters. ?1|?2|?3.

This can be useful if you don't know in advance how many lines or rows you need to process from your input source.

<table>
<tr>
<th>Option</th>
<th>Meaning</th>
</tr>
<tr><td>input</td><td>Can be text, another plugin, or the reserved keywords: <em>selected</em> and <em>clipboard</em></td></tr>
<tr><td>?1</td><td>the character to "repeat" the input at.
There are a number of reserved options <em>\s</em> = space, <em>\t</em> = tab, <em>\n</em> = new line - but you should be able to use any character apart from []|
This is useful of you want to process each line from an <em>input</em>.
</td></tr>
<tr><td>?2</td><td>Think of <em>?2</em> as the <b>row</b> marker - see Split above.</td></tr>
<tr><td>?3</td><td>Think of <em>?3</em> as the <b>column</b> marker - see Split above.</td></tr>
</table>


Basic example: this selected text <em class='sel'>a,b,c,d</em> using this snippet

<blockquote class='boxed'>
<code>[[SplitRepeat=selected|,]]</code>
Hello <code>[[sp=1]][[C=\n]]</code>

</blockquote>
Result:
<blockquote class='boxed'>
Hello a
Hello b
Hello c
Hello d

</blockquote>

Works with two-dimensions as well, this selected text

<em class='sel'>wordA1,cA1	wordA2,cA2	wordA3,cA3
wordB1,cB1	wordB2,cB2	wordB3,cB3
wordC1,cC1	wordC2,cC2	wordC3,cC3</em>

Using this snippet:
<blockquote class='boxed'>
<code>[[SplitRepeat=selected|\n|\t|,]]</code>
1-1 Hello <code>[[sp=1,1]]</code>
1-2 Hello <code>[[sp=1,2]]</code>

</blockquote>
Result:
<blockquote class='boxed'>
1-1 Hello wordA1
1-2 Hello cA1
1-1 Hello wordB1
1-2 Hello cB1
1-1 Hello wordC1
1-2 Hello cC1

</blockquote>

<b><i>Named Splits</i></b>

<code>[[Split_name=input|?1|?2]]</code> and <code>[[SplitRepeat_name=input|?1|?2|?3]]</code>

If need to use multiple split in the same snippet you can make use of named Splits to prevent the output of the first split to interfere with the second split - see <a href='https://github.com/lintalist/lintalist/issues/48'>issue #48</a>. This will also allow you to combine Split and SplitRepeat in the same snippet.

<b>Examples</b>

This selected text: <em class='sel'>WordA1 WordA2 WordA3	WordB1 WordB2	WordC1 WordC2</em>

<blockquote class='boxed'>
<code>[[Split<span style='color:blue'>_MyName</span>=selected|\t]]</code>
<code>[[SplitRepeat<span style='color:magenta'>_OtherName</span>=[[sp<span style='color:blue'>_MyName</span>=2]]|\s]]</code>
result=<code>[[sp<span style='color:magenta'>_OtherName</span>=1]]</code>

</blockquote>
Result:
<blockquote class='boxed'>
result=<span style='color:magenta'>WordB1</span>
result=<span style='color:magenta'>WordB2</span>

</blockquote>

This selected text: <em class='sel'>wordA1,cA1	wordA2,cA2	wordA3,cA3</em>

Read a text file and use the third line:
<blockquote class='boxed'>
<code>[[Split<span style='color:blue'>_File</span>=[[File=example.txt]]|\n]]</code>
The third line of the text file is <code>[[sp<span style='color:blue'>_File</span>=3]]</code>
<code>[[Split<span style='color:magenta'>_Sel</span>=Selected|\t|,]]</code>
<code>[[sp<span style='color:magenta'>_Sel</span>=1,2]]</code>
<code>[[sp<span style='color:magenta'>_Sel</span>=3,1]]</code>

</blockquote>
Result:
<blockquote class='boxed'>
The third line of the text file is: <span style='color:blue'>[...]</span>
<span style='color:magenta'>cA2</span>
<span style='color:magenta'>wordA3</span>

</blockquote>

<b id='combiningsplit'><a href='#combiningsplit' class='headline'>Combining Split and Choice to create a Snippet with Logic</a></b>.

You select an option using the Choice plugin and use the result to insert specific information later on.
The chosen item (output of Choice) is used as input for a named Split. As the SP will always be the first (e.g. 1), you can use that as a "variable" to select an option in a second named Split.
<blockquote class='boxed'>
<code>[[Split<span style='color:blue'>_C1</span>=[[choice=1	Option1|2	Option2|3	Option3|4	Option4]]|\t]]</code>
<code>[[Split<span style='color:magenta'>_CSub</span>=sub1 sub2 sub3 sub4|\s]]</code>

You made Choice Number <code>[[SP<span style='color:blue'>_C1</span>=1]]</code>
And the sub-selection that goes with it is:
<code>[[SP<span style='color:magenta'>_CSub</span>=[[SP<span style='color:blue'>_C1</span>=1]]]]</code>

</blockquote>
Result (if you chose option 3):
<blockquote class='boxed'>
You made Choice Number <span style='color:blue'>3</span>
And the sub-selection that goes with it is:
<span style='color:magenta'>sub3</span>

</blockquote>
The above method could also be used with Local variables
<blockquote class='boxed'>
<code>[[Split<span style='color:blue'>_C1</span>=[[choice=1	Option1|2	Option2|3	Option3|4	Option4]]|\t]]</code>

You made Choice Number <code>[[SP<span style='color:blue'>_C1</span>=1]]</code>
And the sub-selection that goes with it is:
<code>[[var=LocalVariable[[SP<span style='color:blue'>_C1</span>=1]]]]</code> <span class='llcomment'>; [[SP_C1=1]] would be replaced by 1, 2, 3 or 4 so it would insert the contents of LocalVariable1..4</span>

</blockquote>


<h3 id='LocalBundle'><a href='#LocalBundle' class='headline'>*4 <em>Local bundle (Variables) [[Var=...]]</em></a></h3>

By using the <code>[[Var=]]</code> code in your texts you can insert variables which are defined in a special bundle and are stored in <b>local\local.txt</b>. This file has a similar setup to a regular bundle but only has two parts: a name and the content. You can use this to store (personal) information which you can reuse so you do not have to update it multiple times or share it with someone else. This could be your name or address for example:

<blockquote class='boxed'>
- LLVarName: MyAddress
  LLContent: Agent Cooper
  The Black Lodge
  Twin Peaks

</blockquote>

You can now insert your address in your snippets/bundles by using <code>[[Var=MyAddress]]</code> anywhere in the text.

So if your address changes you only have to update the Address variable and all your bundles will be up to date. This makes it also easier to share a bundle with other users as they don't have to update your bundle by editing all your address entries, they can simply add the Address variable to their local bundle. 

<b>Manage local variables (Local bundle editor)</b>

You can edit your local variables using the Local bundle editor. You can access the editor via the Tray menu or via the Edit menu in the Search GUI (Manage local variables)

<span class='small'>Local bundle editor</span>
<img src='img/lintalist-local-bundle-editor.png' alt='Local bundle editor' border='0'  style='max-width:100%;' />
<span class='small'>You can use the Scan button to scan your bundles for new local variables and add them.</span>

<h3 id='TextExample'><a href='#TextExample' class='headline'>Example Text Snippet (Part1 or Part2):</a></h3>

<blockquote class='boxed'>
Dear <code>[[Input=Enter Name of Customer]]</code>,

thank you for your order of your pair of <code>[[Choice=Red|Blue|Black|Pink|Brown]]</code> shoes 
at <code>[[DateTime=dd-MMM-yyyy]]</code>.

Your sincerely,
<code>[[Var=Name]]</code>
<code>[[Var=Address]]</code>

</blockquote>

<h2 id='Script'><a href='#Script' class='headline'>Script(s)</a></h2>

You can include any valid AutoHotkey script into a snippet. The code is saved to a temporary file and run with AutoHotkey. The temporary script is written to <b>tmpscrpts\</b> in your Lintalist directory. After the script has finished it is deleted.

<span class='tip'>You can enable / disable the use of Scripts via the Tray menu</span>

<b id='script-llinit'><a href='#script-llinit' class='headline'>Special Script Function: LLInit()</a></b>

If you include <code>LLInit()</code> in your script (at the start) the following variables and functions will be
available:

<a name='script-variables'></a><a href='#script-variables' class='headline'>Variables:</a>

- ActiveWindowID (use with ahk_id)
- ActiveWindowProcessName (use with ahk_exe)
- ActiveWindowClass (use with ahk_class)
- ActiveWindowTitle
- ActiveControl
- SendMethod (settings)
- PasteDelay (settings)

These Active* variables contain the information about the application that was active <strong>when</strong> the Lintalist Search window was activated <strong>OR</strong> in case of shortcut or shorthand the current active application.
You can use these variables in your "Snippet" script to ensure your script operates on the correct window if need be.
See <a href='#Configuration'>Configuration</a> for information about SendMethod, PasteDelay.

<a name='script-functions'></a><a href='#script-functions' class='headline'>Functions:</a>

- GetActiveWindowStats()
  Get Active Window & Control information
  
- SendKey(Method = 1, Keys = "")
  Send text or keystrokes using the defined method (SendMethod)
  Method: 1, 2, 3 or 4. 
  1 = SendInput, 2 = SendEvent, 3 = SendPlay, 4 = ControlSend
  For more background info see the AutoHotkey Send documentation
  <a href='https://autohotkey.com/docs/commands/Send.htm'>autohotkey.com/docs/commands/Send.htm</a>

- ClipSet(Task,ClipNum=1,SendMethod=1,Value="") 
  Used by Lintalist to set/restore clipboard.
  SendMethod as above with SendKey, set by configuration.
  See <b>include\default.ahk</b> for full details as ClipSet has a number of
  other functions which may be of interest for more advanced use(r)s.

<b id='script-plugins'><a href='#script-plugins' class='headline'>Special Script plugins</a></b> [v1.9.3+]

Use <code>[[llpart1]]</code> and <code>[[llpart2]]</code> in your script to include the contents of Part1 and/or Part2 in your scripts.
It will process any plugins before setting the result as a (multiline) variable in your script.

This Script code (in the snippet):
<blockquote class='boxed'>
[[llpart1]]
<span class='llbundle'>MsgBox</span> % llpart1

</blockquote>

Will turn into the following Script code when started:
<blockquote class='boxed'>
llpart1=
(join`n % <span class='llcomment'>; note the percent sign here</span>
....Text of Part1...
)
<span class='llbundle'>MsgBox</span> % llpart1

</blockquote>
If Part1 or Part2 has the Caret plugin <code>^|</code>, the variables <em>LLBackLeft1, LLBackLeft2, LLBackUp1</em> and <em>LLBackUp2</em> are
also stored. You can use these to position the caret by sending UP and LEFT keys (do UP first, LEFT second)

Note that % signs in snippets do not need to be escaped as the <code>(join`n %</code> takes care of that automatically (see the <a href='https://autohotkey.com/docs/Scripts.htm#Join'>Join documentation</a> at AutoHotkey)

<blockquote class='boxed'>
<span class='llcomment'>; send or paste llpart1, for llpart2 use LLBackUp2 and LLBackLeft2</span>
<span class='llbundle'>If</span> LLBackUp1
	<span class='llbundle'>Send</span> {Up %LLBackUp1%}
<span class='llbundle'>If</span> LLBackLeft1
	<span class='llbundle'>Send</span> {Left %LLBackLeft1%}

</blockquote>

<a name='script_template'></a><b><a href="#script_template" class='headline'>Script template</a> if you are going to use the clipboard and paste the result:</b>
<blockquote class='boxed'>
<span class='llbundle'>#NoEnv</span>
<span class='llbundle'>#SingleInstance, force</span>
<span class='llbundle'>SetBatchLines, -1</span>
<span class='llbundle'>ListLines, off</span>
<span class='llbundle'>LLInit()</span>                            <span class='llcomment'>; fake call to load global variables from Lintalist main script - see Docs</span>
<span class='llbundle'>ClipSet("s",1,SendMethod,Clipboard)</span> <span class='llcomment'>; store current clipboard contents</span>
<span class='llbundle'>ClearClipboard()</span>                    <span class='llcomment'>; clear it</span>

; ... your code ... may include <code>[[llpart1]]</code> and/or <code>[[llpart2]]</code> 

<span class='llbundle'>SendKey(SendMethod, ShortcutPaste)</span>  <span class='llcomment'>; paste changed clipboard using SendMethod defined by Lintalist settings</span>
<span class='llbundle'>Clipboard:=ClipSet("g",1)</span>           <span class='llcomment'>; restore original clipboard contents</span>
<span class='llbundle'>ExitApp</span>

</blockquote>

<h2 id='Functions'><a href='#Functions' class='headline'>Func<em>tions</em></a></h2>

This is for the more experienced AutoHotkey users.

As of v1.9.4+ Lintalist supports <a href='https://autohotkey.com/docs/Functions.htm#BuiltIn'>built-in AutoHotkey functions</a> (Asc, SubStr, Floor, Mod, etc) or user defined functions. 

<b>Calling a function</b>

<code>[[function(optional parameters)]]</code> Do not use = as in "function=()", omit the = after the function name.

Example <code>[[SubStr("AutoHotkey",5,3)]]</code> -> Result: Hot

<b>User functions</b>

In order to be able to use your own functions they need to be included.
You can do so in <em>plugins\MyFunctions.ahk</em>
Either #include functions or write them there, MyFunctions.ahk will not be overwritten when updating Lintalist.
Be sure to restart Lintalist after modifying MyFunctions.ahk to ensure functions become available.

One standard function is included: <code>[[EnvGet(EnvVarName)]]</code> - see Built-in Variables below for an example.
(see <a href='https://ss64.com/nt/syntax-variables.html'>Windows Environment Variables</a> on SS64.com)

If you want to update the entire snippet and not simply process the returned value from a function you need to make clip a global variable in your function.

<blockquote class='boxed'>
MyFunc(parameters)
   {
    <span class='llbundle'>global</span> clip <span class='llcomment'>; make clip global</span>
    <span class='llcomment'>; ... your code</span>
    <span class='llcomment'>; ... changing clip </span>
    <span class='llbundle'>Return</span>
   }

</blockquote>

The maximum number of parameters is 20.

<h2 id='Variables'><a href='#Variables' class='headline'>Built-in <em>Variables</em></a></h2>

As of v1.9.4 Lintalist supports a subset of AutoHotkeys' built-in variables, simply use them anywhere in your snippet (text, plugins, functions) and they will be replaced by the proper value. Just wrap them in [[..]].

<blockquote class='boxed'>
My documents folder is [[A_MyDocuments]] and my IP is [[A_IPAddress1]]
My temp folder is <code>[[EnvGet(temp)]]</code>

</blockquote>

If you want to change which AutoHotkey built-in variables are supported simply edit the <span class='setting'>AutoHotkeyVariables</span> key in settings.ini (exit Lintalist first before doing so)

Use <code>[[EnvGet(EnvVarName)]]</code> to read Environment variables.

<a href='https://autohotkey.com/docs/Variables.htm#Special_Characters'>Special Characters</a>:
	A_Space, A_Tab

<a href='https://autohotkey.com/docs/Variables.htm#prop'>Script Properties</a>:
	A_WorkingDir, A_ScriptDir, A_ScriptName, A_ScriptFullPath, A_ScriptHwnd, A_AhkVersion, A_AhkPath, A_IsUnicode, A_IsCompiled

<a href='https://autohotkey.com/docs/Variables.htm#date'>Date and Time</a>:
	A_YYYY, A_MM, A_DD, A_MMMM, A_MMM, A_DDDD, A_DDD, A_WDay, A_YDay, A_YWeek, A_Hour, A_Min, A_Sec, A_MSec, A_Now, A_NowUTC, A_TickCount

<a href='https://autohotkey.com/docs/Variables.htm#os'>Operating System and User Info</a>:
	A_Temp, A_OSType, A_OSVersion, A_Is64bitOS, A_PtrSize, A_Language, A_ComputerName, A_UserName, A_WinDir, A_ProgramFiles, A_AppData, A_AppDataCommon, A_Desktop, A_DesktopCommon, A_StartMenu, A_StartMenuCommon, A_Programs, A_ProgramsCommon, A_Startup, A_StartupCommon, A_MyDocuments, A_IsAdmin, A_ScreenWidth, A_ScreenHeight, A_ScreenDPI, A_IPAddress1, A_IPAddress2, A_IPAddress3, A_IPAddress4



<h2 id='FormattedText'><a href='#FormattedText' class='headline'>Formatted Text <em>Snippets</em></a></h2>

As of LintaList v1.1 several types of formatted text are supported in Snippets.

Formatted text, styled text, or rich text, as opposed to plain text, has styling information beyond the minimum of semantic elements: colours, styles (boldface, italic), sizes, and special features (such as hyperlinks). <span class='small'>Source: <a href='https://en.wikipedia.org/wiki/Formatted_text'>wikipedia</a></span>

<b>General Notes:</b>
1. The application where you paste the snippet INTO does have to accept the formatted text, otherwise nothing will be pasted. Pasting an image into Notepad for example will have no result. Some applications will not accept RTF but will accept HTML or vice versa.
2. Plugins are supported in HTML, Markdown and RTF, not Image. Note that support in RTF may depend on how the RTF file is written (line breaks, formatting etc.) so you may have to experiment and also try to avoid applying styles to the plugin text.
3. The Caret position after pasting - <code>^|</code> - does not work with any of these Formatted Text Snippets.
4. In the Listview these formatted snippets are indicated by HTML/Markdown, RTF and Image icons (if Icons are shown)

<h3 id='html-FormattedText'><a href='#html-FormattedText' class='headline'><em>HTML</em></a></h3>

To paste HTML code as formatted text you have to include <code>[[html]]</code> in your snippet, usually at the start of the snippet but it can be anywhere.
You are allowed to omit the html, head and body tags.
You can nest or chain various HTML snippets using the <code>[[Snippet=]]</code> plugin.
If one or more of the nested snippets contains the <code>[[html]]</code> plugin the entire snippet will be converted to HTML.
Do not mix and match HTML and MD snippets to avoid unexpected end results.

<blockquote class='boxed'>
<code>[[html]]</code>
&lt;h3&gt;Hello: [[Input=What is your name]]&lt;/h3&gt;

&lt;p&gt;This &lt;b&gt;is&lt;/b&gt; a &lt;em&gt;sentence&lt;/em&gt; with formatting.&lt;/p&gt;

&lt;p&gt;Today is &lt;em&gt;[[DateTime=dd MMMM yyyy]]&lt;/em&gt;.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;list item&lt;/li&gt;
	&lt;li&gt;list item&lt;/li&gt;
	&lt;li&gt;list item&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Images also work - either use an http URI: (http://lintalist.github.io/img/lintalist.png)&lt;br /&gt;
&lt;img src='http://lintalist.github.io/img/lintalist.png'&gt;&lt;/p&gt;

&lt;p&gt;or a file URI: (docs/lintalist.png)&lt;br /&gt; 
&lt;img src='docs/lintalist.png'&gt;&lt;/p&gt;

</blockquote>

<b>Notes:</b>
1. Some applications will need a HTTP URI for images to work (webmail for example) - background info on file URI: <a href='https://en.wikipedia.org/wiki/File_URI_scheme'>wikipedia</a>.
If you want to use an image file on your computer you can omit adding the entire file path "file://c:/..../path/to/file.jpg"
Lintalist will automatically insert the full path relative to the folder where lintalist is installed. 

Examples:

An image in a Images sub-folder:

	&lt;img src='Images/lintalist.jpg'&gt; 

An image two folders "up" from the Lintalist folder:

	&lt;img src='../../anotherimage.png'&gt;

<h3 id='markdown-FormattedText'><a href='#markdown-FormattedText' class='headline'><em>Markdown</em></a></h3>

To paste Markdown code as formatted text you have to include <code>[[md]]</code> in your snippet.
Note that only basic Markdown code is properly converted, nested lists are not supported (yet) for example and table formatting is rudimentary - see remarks below.
You can nest or chain several MD snippets, but do not mix and match with HTML snippets to avoid unexpected end results.

<blockquote class='boxed'>
<code>[[md]]</code>
# Heading 1

* unordered list entry
* unordered list entry
	
this is a **normal line** of *text* with some markup

1. numbered list entry
2. numbered list entry

Inserting a link [AutoHotkey](https://autohotkey.com) also works

As does an image:

![Lintalist](https://raw.github.com/lintalist/lintalist/master/docs/img/lintalist.png)

Or a table (slightly deferring from the original markdown)

|cells in the first row are treated | as header cells (th)
cell 1   |cell 2
cell 3   |cell 4

Credits: This markdown conversion to HTML function comes from [GenDocs](https://autohotkey.com/boards/viewtopic.php?f=6&t=1797)

Example of HTML block:

~~~
&lt;ul&gt;
	&lt;li&gt;list item&lt;/li&gt;
	&lt;li&gt;list item&lt;/li&gt;
	&lt;li&gt;list item&lt;/li&gt;
&lt;/ul&gt;
~~~

The above should be displayed as a unordered list.

</blockquote>

This markdown conversion to HTML function comes from GenDocs, which uses a simplified version of the Markdown syntax.
It supports:

- Paragraphs: blocks of text delimited by blank lines. Equivalent to HTML &lt;p&gt;...&lt;/p&gt;.
- In-paragraph line breaks: end a line with two spaces. Equivalent to HTML &lt;br /&gt;.
- Headings: start a line with up to three hash (#) characters, followed by space. Equivalent to HTML &lt;hN&gt;...&lt;/hN&gt;
- Emphasis marks: *...*. Equivalent to HTML &lt;em&gt;...&lt;/em&gt;
- Strong emphasis marks: **...**. Equivalent to HTML &lt;strong&gt;...&lt;/strong&gt;.
- Inline code marks: `...`. Equivalent to HTML &lt;code&gt;...&lt;/code&gt;.
- Code sections: unlike standard Markdown, they use the blockquote syntax: blocks of text whose lines start with &gt; followed by a space.
- Unordered lists: lines that start with *. Equivalent to HTML &lt;ul&gt;...&lt;li&gt;...&lt;/li&gt;...&lt;/ul&gt;.
- Ordered lists: lines that start with a number, dot and space (e.g. 1. ); or letter, dot and space (e.g. a. ). Equivalent to HTML &lt;ol&gt;...&lt;/ol&gt; and &lt;ol style="list-style-type: lower-alpha"&gt;...&lt;/ol&gt; respectively.
- Escape sequences: the sequences \*, \`, \[, \], \! and \\ are recognized, and yield literal characters.
- Links: [Link text](Link URL). Equivalent to HTML &lt;a href="..."&gt;...&lt;/a&gt;.
- Images: ![Image ALT text](Image file name). Equivalent to HTML &lt;img src="..." alt="..."/&gt;.

Insert HTML:
- You can include HTML code by placing it between two sections of ~~~ like so
~~~
&lt;p&gt;HTML code here&lt;/p&gt;
~~~

Tables are defined as follows:
- If a line starts with pipe character (|) it indicates the start of a table (&lt;table&gt;).
- The end of a table is marked by an empty line (&lt;/table&gt;).
- Cells in the first row are treated as header cells (&lt;th&gt;). 
- You should not define the start and end of a row, each line is treated as a row (&lt;tr&gt;&lt;td&gt;...&lt;/td&gt;&lt;/tr&gt;)
- Use a single | to mark a cell division (&lt;/td&gt;&lt;td&gt;)
- Not supported: Text-alignment in cells (always left aligned), Cell- and Rowspans.

Example, a 3x3 table:

|Table     | Description | headers
Cell       | Cell        | Cell
Cell       | Cell        | Cell

<h3 id='rtf-FormattedText'><a href='#rtf-FormattedText' class='headline'><em>RTF</em></a></h3>

Using RTF is similar to the <a href="#file-plugin">File</a> plugin, it will insert the formatted text including images from the specified file. Either use the full path to the RTF file or a path relative to Lintalist directory.
All other text in the snippet will be discarded.

<blockquote class='boxed'>
<code>[[rtf=Extras\examples\example.rtf]]</code>

</blockquote>

You can find an example RTF file including a plugin in the Extras\formatted\ folder.

<h3 id='image-FormattedText'><a href='#image-FormattedText' class='headline'><em>Image</em></a></h3>

Using Image is similar to the <a href="#file-plugin">File</a> plugin, it will insert the image from the specified file. Either use the full path to the image or a path relative to Lintalist directory.
All other text in the snippet will be discarded.

<blockquote class='boxed'>
<code>[[image=Extras\examples\image.png]]</code>

</blockquote>

You can find an example image file in the Extras\formatted\ folder.

<h2 id='Editing'><a href='#Editing' class='headline'>Editing Snippets <em>and Bundles</em></a></h2>

<h3 id='F4'><a href='#F4' class='headline'><span class='key'>F4</span> (Edit Snippet)</a></h3>

Start searching your bundle and select the snippet you want to edit (highlight with cursor or mouse) and use F4 to edit it. The Lintalist Bundle Editor will be shown so you can now edit the shortcut, shorthand, both text parts and the script. If you prefer to edit the texts or scripts in your default text editor* click the corresponding 'Edit in Editor' button. It will open the text or script in a new editor window. Save the temporary file and close the editor to automatically copy any changes back to the Lintalist Bundle Editor. You can use the plugins menu to insert plugins including the available local variables and counters.

To store the modified snippet click the save button, the changes are immediately available.

* [v1.7+] you can change the editor used via the "SnippetEditor" setting in the configuration menu.

<span class='small'>Snippet editor</span>
<img src='img/lintalist-snippet-editor.png' alt='Snippet editor' border='0'  style='max-width:100%;' />

To modify the bundle properties such as the name, titlematch etc use <a href="#F10">Lintalist Bundle Editor</a>.

<h3 id='F5'><a href='#F5' class='headline'><span class='key'>F5</span> (Copy Snippet and Edit)</a></h3>

Start searching your bundle and select the snippet you want to copy (highlight with cursor or mouse) and use F5 to edit it. The Lintalist Bundle Editor will be shown so you can now edit the shortcut, shorthand, both text parts and the script. If you prefer to edit the texts or scripts in your default text editor click corresponding 'Edit in Editor' button. It will open the text or script in a new editor window. Save the temporary file and close the editor to automatically copy any changes back to the Lintalist Bundle Editor. 

To store the modified snippet click the save button, the changes are immediately available.

You can also modify the bundle properties such as the name, titlematch etc on the second tab of the Lintalist Bundle Editor.

<i>Note: this action (F5) is not thoroughly tested.</i>

<h3 id='F6'><a href='#F6' class='headline'><span class='key'>F6</span> (Move Snippet to another Bundle)</a></h3>

Start searching your bundle and select the snippet you want to move (highlight with cursor or mouse) and use F6 to move it. A popup menu will allow you to select the bundle you wish the snippet to move to.

<i>Note: this action (F6) is not thoroughly tested.</i>

<h3 id='F7'><a href='#F7' class='headline'><span class='key'>F7</span> (Add new Snippet)</a></h3>

To add a new snippet to bundle make sure the bundle you wish to add the snippet to is loaded in the search window. If multiple bundles are loaded you are asked to select the bundle to which you want to add the new snippet first.

To add the new snippet to the selected bundle click the save button, the changes are immediately available.

<h3 id='F8'><a href='#F8' class='headline'><span class='key'>F8</span> (Delete Snippet)</3></h3>

Start searching your bundle and select the snippet you want to edit (highlight with cursor or mouse) and use F8 to delete it. After confirmation the snippet is removed from the bundle.

<span class='tip'>Backup: Whenever a snippet is edited (F4) or a deleted (F8) a backup of the bundle will be made in a backup folder when Lintalist is re-started or the program is closed. These can be found in the bundles directory: <b>bundles\backup\</b>. If you are not happy with the changes you have made you can copy back the prior version of the bundle. You may have to re-add any new snippets you have added after the last backup was made.</span>

<h2 id='ManagingBundles'><a href='#ManagingBundles' class='headline'>Managing <em>Bundles</em></a></h2>

- If you have a new bundle you can add it to Lintalist by simply copying the file into the Bundles directory and (re)starting Lintalist

- If you want to create a new bundle, start Lintalist, open the search window and <a href='#F10'>press F10</a>. The new bundle will be saved in your Bundles directory.

- If you no longer wish to use a particular Bundle, Exit Lintalist first and then simply remove the file from the Bundles folder and start Lintalist or use the Bundle Editor and delete it there.

- You can also use a <a href='#BundleConvertors'>bundle converter</a> to convert files from a variety of formats to the Lintalist format.

<h3 id='F10'><a href='#F10' class='headline'><span class='key leftpad'>F10</span> (Bundle properties)</a></h3>

If you want to change the properties of an existing bundle such as the name (appears in the Menu) or the TitleMatch you can use the bundle properties editor. Press F10 or use the menu to open it while the Search window is active. Select the bundle in the list and change the properties and click SAVE.

<b>New bundle</b>

There are two methods of adding a new Bundle to Lintalist.

1. Create a new bundle in your text editor and copy that file to the \bundle\ folder and reload.
2. Use Lintalist to create a bundle and start adding snippets.

To add a new bundle (a collection of snippets) open the Lintalist search window and use the Edit, Bundle properties menu (or press F10). The Lintalist bundle editor will be opened where you can enter the name and other information. When you click save you will be asked for a file name of your bundle. 
<a name='TitleMatch'></a>
The most important fields are <b>Name</b> and <b>TitleMatch</b>. The <b>Name</b> is used in the Bundle menu and can be displayed in the search results (see configuration) and the <b>TitleMatch</b> field will allow you to make a Bundle context sensitive which means the search, abbccreviations and shortcuts will only be available in Windows which match the title you enter in the <b>TitleMatch</b> field.

The <b>TitleMatch</b> field can be a comma separated list of partial window title matches. You can <b>not</b> use Wildcards.
Example: .txt,.doc is OK, *.txt,*.doc is not.

As of <b>v1.9</b> you can also do the opposite: use the <b>TitleMatch</b> field to define the windows where the bundle should NOT be active by starting the list with a <b>!</b> (exclamation mark).
This can be useful if you want a bundle to work everywhere except in a specific window. 
Example: <code>!txt</code> will make the bundle work everywhere apart from txt files.
Just to note that this feature hasn't been tested as vigorously as the regular TitleMatch mode. 

New bundles are stored in the bundle directory. Lintalist is restarted after you add a new bundle. A first snippet is automatically added when a new bundle is created.

Once you have created a bundle you can add new snippets via the Edit, New snippet menu or press F7 - make sure the bundle is loaded first by selecting it via the Bundle menu in the Search window. You can add as many snippets as you like. Once ready do not forget to unlock the bundle by using the Lock button in the Lintalist search window.

An illustrated guide is available in the <a href="https://github.com/lintalist/lintalist/wiki/Adding-a-new-Bundle-using-Lintalist">Wiki</a>.

<span class='small'>Bundle editor</span>
<img src='img/lintalist-bundle-editor.png' alt='Bundle editor' border='0'  style='max-width:100%;' />

<h3 id='BundleConvertors'><a href='#BundleConvertors' class='headline'>Bundle Converters</a></h3>

The following converters are available via <b>Extras\BundleConverters\</b> (requires AutoHotkey) or available via the Tools menu in the Search window and the Bundle editor.

- List.ahk		Regular lists (plain text file, one item per line)
- UltraEdit.ahk		UltraEdit Taglists (<a href='http://www.ultraedit.com/downloads/extras/tags-autocomplete.html'>http://www.ultraedit.com/downloads/extras/tags-autocomplete.html</a>)
- CSV.ahk		Comma-Separated Values (CSV) files (<a href='http://en.wikipedia.org/wiki/Comma-separated_values'>en.wikipedia.org/wiki/Comma-separated_values</a>)
			(Uses ReturnDSVArray by DerRaphael)
- Texter.ahk		Texter (Exported) Bundles (No known (general) repositories, experimental convertor, 
			github.com/adampash/texter/)

If you have made a converter let me know so I can add a link to it or possible include it with Lintalist.

Also, if you know of taglists, bundles, etc of other editors and programs you would like to see converted drop a line at the AutoHotkey forum or <a href='https://github.com/lintalist/lintalist/issues'>GH</a> and include a link to some examples if possible.

<h2 id='cmdline'><a href='#cmdline' class='headline'>Command line <em>parameters</em> <span class='small'>[v1.2+]</span></a></h2>

<b>-Active</b>: starting Lintalist and open the search window

	Usage Running lintalist.exe installed: <em>lintalist.exe lintalist.ahk -Active</em>
	Usage AutoHotkey installed:            <em>lintalist.ahk -Active</em>

There is also a configuration setting that can do this: <span class='setting'>ActivateWindow</span>

<b>-Bundle=</b><i>filename.txt</i>: load specific bundle and lock

<b>-Ini=</b><i>filename-for-settings.ini</i>: use a different settings file (default is settings.ini) [v1.8+]

<b>-ReadOnly</b>: start in ReadOnly mode, no editing of bundles, settings.ini, counters and local variables [v1.9.4+] <a href='https://github.com/lintalist/lintalist/issues/95'>Discussion @ GH - #95</a>
(A * is added to the Lintalist Search GUI title and Tray Menu tooltip)

<b>-Administrator</b>: (re)start Lintalist as Administrator - also available as a Setting via Configuration (Administrator) or via the Tray menu [v1.9.7+] <a href='https://github.com/lintalist/lintalist/issues/99'>Discussion @ GH - #99</a>
(<em>username</em>^ is added to the Lintalist Search GUI title and Tray Menu tooltip)

<h2 id='FAQ'><a href='#FAQ' class='headline'>F.A.<em>Q</em> &amp; Known <em>Issues</em></a></h2>

<h3>Faq</h3>

<a name='faq1'></a><b>Q1:</b> Nothing gets pasted / I just see the letter v (or nothing at all)
<b>A1:</b> You probably need to increase the <span class='setting'>PasteDelay</span> setting. Right-click tray icon, configuration, PasteDelay. 
    Increase the milliseconds. You may need to experiment a bit to find a good setting.

<a name='faq2'></a><b>Q2:</b> It still does not work!
<b>A2:</b> There are a number of <span class='setting'>SendMethods</span> you can try. There are 4, Right-click tray icon, configuration, SendMethod. 
    Try various methods until you find one that works, see Q1 as well as you might need to try a number of combinations.
    A good program to test it in is Notepad.

<a name='faq3'></a><b>Q3:</b> My editor(s) selects a line of text even if nothing is selected.
<b>A3:</b> There are a number of editors that automatically select an entire line - even it it is empty - when selecting 
    a snippet with [[selected]] or script. Known editors: 
    - UltraEdit (can be turned off in configuration), - EditPad, - Sublime Text and possibly others.
    If you can not turn off this behaviour, make sure something is selected before you use a snippet OR
    modify the snippet by removing [[selected]].

<a name='faq4'></a><b>Q4:</b> I want to do an OR search as in "this OR that"? Is that possible?
<b>A4:</b> Yes, choose RgEx (Regular Expression) search (alt-r) and use a | (pipe)
    Example: this|that
    will find find snippets with either THIS or THAT as part of the text (part1, part2, shorthand)

<a name='faq5'></a><b>Q5:</b> I type the shorthand (abbreviation) or press the shortcut but nothing happens!
<b>A5:</b> - Make sure shortcuts and shorthand are not disabled (tray menu). Perhaps Lintalist is paused.
    - Another bundle may be locked so the bundle you think should be active isn't, unlock it using the button on the toolbar.
    - Make sure the TitleMatch of the bundle is set correctly if it is not the default bundle (bundle editor).

<h3>Known Issues</h3>

<a name='ki1'></a><b>K1:</b> I can not append a new snippet to my bundle!
<b>A1:</b> If this happens try "Reload Bundles" or restart Lintalist, for some reason Lintalist can not find 
    or access the bundle or possibly it has lost track of which bundle it should append to.
    This should be fixed in a future update of Lintalist
    <b>Update v1.9.5+:</b> this should no longer happen, do report it if you notice it, especially if you can reproduce it.

<a name='ki2'></a><b>K2:</b> It doesn't always work with Flash edit controls
<b>A2:</b> When the Lintalist GUI becomes active the Flash (edit) control looses focus. It is not possible to 
    reliably detect and (re)focus these types of controls. If you experience this often you could resort to
    manual pasting after you've changed the <span class='setting'>PasteMethod</span> setting to 1 or 2 - See <a href='https://github.com/lintalist/lintalist/issues/68#issuecomment-256087094'>#68</a>

<a name='ki3'></a><b>K3:</b> It doesn't work with programs installed via the Windows Store
<b>A3:</b> That seems to be correct and there is no solution for such applications at the moment.
    Manual pasting might work here for you as well, see <span class='setting'>PasteMethod</span> setting or use the <b>PasteMethod</b> hotkey.

<!-- 
<a name='ki'></a><b>K:</b> 
<b>A:</b> 
 -->

<h2 id='Expert'><a href='#Expert' class='headline'>Expert</a></h2>

<b><a href='#RunQuery' class='headline'>RunQuery</a></b> <a href='https://github.com/lintalist/lintalist/issues/153'>Discussion @ GH - #153</a>

Allow user to use the query (what you typed in the searchbox) and start a user defined script passing on the query as parameter(s).

In settings.ini there are three hidden options:

QueryAction: disable/enable
QueryHotkey: hotkey to use to "run query"
QueryScript: script to start and where query is passed onto as parameter(s). Default RunQuery.ahk, a dummy script is created if not found and QueryAction is enabled.

<h2 id='Linux'><a href='#Linux' class='headline'>Linux</a></h2>

It seems it is possible to run Lintalist on Linux, more information here <a href='https://github.com/sl5net/Lintalist4Linux'>github.com/sl5net/Lintalist4Linux</a> (independent project, not tested)

<h2 id='History'><a href='#History' class='headline'>History</a></h2>

<b>History</b>

&gt; version 1.1 see <a href="../changelog.md">changelog.md</a>
* Version 1.1 - Formatted text support.
* Version 1.0.x - Minor improvements and bug fixes.
* Version 1.0 - First public release.
&lt; Version 1.0 - private versions only (small set of users)
* See also credits.txt (Some icons by Yusuke Kamiyamane, Silk icon set, etc)

<!--  -->
<span class='smalltext'>
<img src='img/lintalist-title-footer.gif' alt='lintalist' align='left' style='margin-top:6px;padding-right:5px;' /><b>Disclaimer:</b> Use at your own risk. If you find a new bundle take a look at the script sections of each snippet. As Lintalist can run any AutoHotkey script it can also run faulty or insecure code. Be sensible, if you simply want to try a bundle selecting 'Pause scripts' via the tray menu might be a useful idea.
</span> 

<span style='float:right;'>&copy; Copyright 2009-2023 Lintalist. See license.txt</span>
</pre>

<a href="https://github.com/lintalist"><img style="position: absolute; top: 0; right: 0; border: 0;" src="img/forkme_right_red_aa0000.png" alt="Fork me on GitHub"></a>

</div>

</body>
</html>